使用后更改配置时,我遇到EF5 DbContext问题。我正在使用POCO T4模板。这是场景:
我修改上下文的配置以禁用动态代理和延迟加载,如下所示:
context.Configuration.ProxyCreationEnabled = false;
context.Configuration.LazyLoadingEnabled = false;
然后我再次查询一个集合,并使用代理和关系获得相同类型的结果。
在初始化上下文后,我需要做些什么才能将配置考虑在内?有可能吗?
提前致谢!
答案 0 :(得分:1)
如果你查询一个集合,禁用代理创建并再次查询同一个集合,你很有可能获得代理实体。原因是在上下文中内部使用的身份映射。每个实体只能由上下文跟踪一次。因此,如果您在启用代理创建的情况下查询该集,则EF将为从数据库加载的每个唯一记录创建具有动态代理的实体实例。在禁用代理创建后再次查询该集时,EF将重用所有已创建的实体(及其代理),并仅为尚未加载的记录创建没有动态代理的新实体。
如果您想避免使用这些代理,您必须:
您也可以尝试使用AsNoTracking()
,但我怀疑它不起作用。