当我想要实际的实体类时,我遇到了实体框架返回代理的问题。我第一次运行代码时,所有代码都可以正常运行(无代理),但每次迭代后,我的一个DbSets总是返回代理,而不是实际类型。为什么EF返回一个代理类而不是实际的实体?
我在每次迭代后处理上下文,所以我不明白为什么第一次通过它,每次都不行。
我的代码在这一行上失败。我所有的POCO都有Table属性集,但是因为它返回的是代理类,所以没有表属性。
TableAttribute attrib = (TableAttribute)attributes.Single();
DbContext中存在一些幕后静态魔法,它是在我销毁该对象后生活的吗?
我用移动我的对象到内存以下
MajorClasses = ctx.MajorClasses.ToArray();
我也试过
MajorClasses = ctx.MajorClasses.AsNoTracking().ToArray();
在我OnModelCreating,我有以下设置
base.Configuration.ProxyCreationEnabled = false;
base.Configuration.LazyLoadingEnabled = false;
我在我的问题中增加了更多细节。我确实有这个设置集,没有我的应用程序不能像POCO那样处理代理。 – 2012-02-29 15:25:29
它在更新的问题。我反映了从中获取属性的类。 – 2012-02-29 15:27:43
@ MalcolmO'Hare我已经发布了我们用来从代理类型获取POCO类型的代码。 – cadrell0 2012-02-29 15:31:24