ObjectContext.GetObjectType(e.GetType())不返回POCO实体的实体类型

时间:2013-09-12 13:11:06

标签: c# entity-framework entity-framework-6

ObjectContext.GetObjectType Method应该返回“与指定类型的代理对象关联的POCO实体的实体类型”

那么为什么我的代码只返回代理?

我正在使用实体框架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";

1 个答案:

答案 0 :(得分:17)

您使用的是错误的ObjectContext。 EF6不是基于System.Data.Entity.dll构建的。您需要使用EntityFramework.dll中的ObjectContext。实际上,如果您使用EF6来避免像这样的情况,实际上不建议在项目中引用System.Data.Entity.dll。

解决问题:

  • 删除对System.Data.Entity.dll的引用(以防万一)
  • System.Data.Objects.ObjectContext.GetObjectType(e.GetType());替换为System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(e.GetType())