我有以下查询:
using (var forumsDb = new ForumsDb())
{
forumsDb.Configuration.LazyLoadingEnabled = false;
var categoryList = forumsDb.Categories.Select(c => c).ToList();
/***some code here***/
}
现在,categoryList
包含4个项目(我在数据库中有4个类别),但它们都是dynamicproxies
类型,而不是(正如我所期望的)Category
。< / p>
我做错了什么?
答案 0 :(得分:5)
你没有做错任何事。 EF将您的实体包装在版本跟踪代理中,以便它可以检测对象的更改并支持延迟加载。
如果要删除代理,可以从上下文中分离对象,也可以通过指定DbContext.Configuration.ProxyCreationEnabled
false
答案 1 :(得分:1)
动态代理会自动创建对象周围的包装器,处理更改跟踪以确保在运行SaveChanges时保存正确的对象。
从您的对象继承(在您的情况下为Category
)并且可以用作相应的对象。