【发布时间】:2011-01-23 17:08:34
【问题描述】:
我刚刚实现了一个基于 EFv4 POCO 实体模板的存储库。
当我这样做时
public Client Load(Guid firmId,
int prettyId)
{
var client = (from c in _ctx.Clients where c.firm_id == firmId && c.PrettyId == prettyId select c).FirstOrDefault();
return client;
}
返回的客户端是类型
{System.Data.Entity.DynamicProxies.Client_8E92CA62619EB03F03DF1A1FC60C5B21F87ECC5D85B65759DB3A3949B8A606D3}
这里发生了什么?我想我会摆脱对 System.Data.Entity 命名空间中的类型的任何引用。返回的实例应该是Client类型,是一个简单的POCO类。
【问题讨论】:
-
显然它与 ContextOptions.ProxyCreationEnabled 属性有关,如果我们将其设置为 false(默认为 true),它将不会创建代理对象(那些是 DynamicProxies 类型的对象)。但是我们也失去了延迟加载的能力。如果有人对此主题有更多见解,请回复。
-
动态代理也支持更改跟踪功能。
-
您确定禁用代理对象时会丢失延迟加载吗?我以前没有听说过这个问题......(然后我再次禁用延迟加载并急切加载我想要的)
-
是的,我经历过。第二次我禁用了 ProxyCreationEnabled,我的对象中缺少引用的实体。这也是我对这篇文章的理解msdn.microsoft.com/en-us/library/dd456853.aspx
标签: entity-framework entity-framework-4