ObjectContext.GetObjectType(e.GetType())不返回POCO实体的实体类型
ObjectContext.GetObjectType方法应返回“与指定类型的代理对象关联的POCO实体的实体类型”
那么为什么我的代码只返回代理?
我正在使用entity framework6发布候选版
//Soft delete var e = Context.Set().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());
withSystem.Data.Entity.Core.Objects.ObjectContext.GetObjectType(e.GetType())