![](/img/trans.png)
[英]EF4: Why does proxy creation have to be enabled when lazy loading is enabled?
[英]EF4 POCO with Lazy Loading. Why does fixup iterate entire database?
這真的是預期的行為嗎? 我正在使用標准的T4 POCO模板(但是通過http://geekswithblogs.net/danemorgridge/archive/2010/06/28/entity-framework-repository-amp-unit-of-work-t4-生成了Repository和UnitOfWork template-on.aspx雖然問題似乎與POCO修正一樣)
如果我做以下事情
var UOW = new EFUnitOfWork();
UOW.LazyLoadingEnabled = true;
UOW.ProxyCreationEnabled = true;
var horderRepo = RepositoryHelper.GetHORDERRepository(UOW);
var subrelmRepository = RepositoryHelper.GetSUBRELMRepository(UOW);
var ho = horderRepo.Where(h=>h.RECORD_NUMBER==1).FirstOrDefault();
var somerelm = subrelmRepository.Where(r=>r.RECORD_NUMBER==ho.REALM_KEY+1).FirstOrDefault();
ho.SUBRELM=somerelm;
UOW.Commit();
return View(ho);
每次我將ho.SUBRELM更改為新的RELM時,都會調用預期的POCO修正。 如果100,000個其他HORDERS(有些人)指向那個relm,那么修正似乎走了很多,永遠(或直到內存耗盡 - 以較早者為准)
如果我關閉延遲加載,這不會發生,但我真的希望fixup能夠回溯我數據庫中的所有關系嗎? 或者還有其他問題? 如果是這樣,什么?
這是使用由T4模板生成的具有延遲加載的POCO實體的眾所周知的問題。 除非您只是將RELM修改為不包含所有包含的HORDERS的導航屬性,否則您無法避免它。 其他可能性是將T4修改為不使用fixup集合或自己編寫POCO。
只是結論 - 這不是EF的錯誤行為。 這是T4模板生成的代碼的意外行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.