ObjectContext.GetObjectType(e.GetType())不返回POCO實體的實體類型

c# entity-framework entity-framework-6

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";

一般承認的答案

您正在使用錯誤的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()); with System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(e.GetType())



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因