3

ObjectContext.GetObjectType 方法应返回“与指定类型的代理对象关联的 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";
4

1 回答 1

17

你用错了ObjectContext。EF6 不是基于 System.Data.Entity.dll 构建的。您需要ObjectContext从 EntityFramework.dll 使用。如果您使用 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())
于 2013-09-12T14:54:04.440 回答