首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略EF5 DBContext配置

忽略EF5 DBContext配置
EN

Stack Overflow用户
提问于 2013-02-19 07:15:45
回答 1查看 2.1K关注 0票数 0

在使用EF5 DbContext之后更改配置时,我遇到了问题。我正在使用POCO T4模板。下面是一个场景:

  • 我在上下文中查询一个集合,并使用它们的关系获取动态代理对象。
  • 我修改上下文的配置以禁用动态代理和延迟加载,如下所示: context.Configuration.ProxyCreationEnabled =假;context.Configuration.LazyLoadingEnabled =假;
  • 然后,我再次查询一个集合,并获得与代理和关系相同的结果。

在初始化上下文之后,我需要做些什么来考虑配置?有可能吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 09:04:14

如果您查询一个集合,禁用代理创建并再次查询相同的集合,那么无论如何您都有很大的机会获得代理实体。原因是在上下文中内部使用的标识映射。每个实体只能被上下文跟踪一次。因此,如果您在启用代理创建的情况下查询该集,EF将为从数据库加载的每个唯一记录创建带有动态代理的实体实例。当禁用代理创建后再次查询集合时,EF将重用所有已经创建的实体(及其代理),并创建没有动态代理的新实体,只用于尚未加载的记录。

如果您想要避免这些代理,您必须:

  • 在第一个查询之前关闭代理创建
  • 对第二个查询使用新的上下文

您也可以尝试使用AsNoTracking(),但我怀疑它不会起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14951826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档