當我想要實際的實體類時,我遇到了實體框架返回代理的問題。我第一次運行代碼時,所有代碼都可以正常運行(無代理),但每次迭代後,我的一個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