ObjectContext.GetObjectType(e.GetType()) 不返回 POCO 实体的实体类型
本文关键字:实体 GetObjectType 类型 POCO 返回 GetType ObjectContext | 更新日期: 2023-09-27 18:31:13
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());
替换为System.Data.Entity.Core.Objects.ObjectContext.GetObjectType(e.GetType())