Entity framework EF 5-有时返回动态代理,即使ProxyCreationEnabled=false;
我一直在观察,有时我的查询在指定后返回代理,有时则不返回Entity framework EF 5-有时返回动态代理,即使ProxyCreationEnabled=false;,entity-framework,Entity Framework,我一直在观察,有时我的查询在指定后返回代理,有时则不返回 this.Configuration.ProxyCreationEnabled=false 我完全不知所措。有人知道为什么有时会发生这种情况吗?是虫子吗 我有这样的代码: this.Configuration.ProxyCreationEnabled = false; this.Configuration.LazyLoadingEnabled = false; var result = qu
this.Configuration.ProxyCreationEnabled=false 我完全不知所措。有人知道为什么有时会发生这种情况吗?是虫子吗 我有这样的代码:
this.Configuration.ProxyCreationEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
var result = query();
其中查询是“SingleOrDefault”。这返回了一个poco刚刚好
然后我把它改为返回一个列表,去掉了“SingleOrDefault”并使用了“Where”子句,现在它返回一个代理列表,而不是poco。我想我终于找到了这个恼人问题的答案 基本上,如果对象作为代理缓存在db上下文中,那么不管配置是否指示不使用代理,它都将作为代理返回
解决方案是创建一个新的上下文,然后执行查询,或者始终关闭代理创建,而不是在运行时动态更改配置。如何关闭代理创建?this.configuration.ProxyCreationEnabled=false;把它放在上下文的构造函数中。很好地抓住了重用对象上下文,将其作为动态对象从缓存中拉出来。