ObjectContext.GetObjectType (e.GetType ()) не возвращает тип сущности объекта POCO

c# entity-framework entity-framework-6

Вопрос

Метод ObjectContext.GetObjectType должен возвращать «тип сущности объекта POCO, связанный с прокси-объектом указанного типа»

Итак, как в моем коде он просто возвращает прокси?

Я использую кандидат на выпуск сущности Framework 6

        //Soft delete
        var e = Context.Set<T>().Find(id);
        e.IsDeleted = true;
        InsertOrUpdate(e);

        Type t = System.Data.Objects.ObjectContext.GetObjectType(e.GetType());
        string name = t.Name;
        //Property_6C887DE7274181E6E99D6FCF2C21BDD59E226F99B0064F59954E70062C135331

        //Surely I shouldn't have to use Substring here?
        name = name.Substring(0, name.IndexOf("_")).ToSpacedTitleCase();
        string message = name + " deleted";

Принятый ответ

Вы используете неправильный ObjectContext . EF6 не построен на System.Data.Entity.dll. Вам нужно использовать ObjectContext из EntityFramework.dll. На самом деле не рекомендуется иметь ссылку на System.Data.Entity.dll в вашем проекте вообще, если вы используете EF6, чтобы избежать подобной ситуации.

Чтобы исправить вашу проблему:

  • удалите ссылку на System.Data.Entity.dll (на всякий случай)
  • замените System.Data.Objects.ObjectContext.GetObjectType(e.GetType()); с System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(e.GetType())


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему