2013-05-05 44 views
0

我想我必須在這裏丟失真正明顯的東西。我使用Visual Studio 2012,並將.Net 4.5作爲項目框架。我首先使用datbase從我的數據庫中生成模型(從數據庫更新模型,選擇表格)。我嘗試過使用默認的實體生成器,並通過顯式選擇EF5.x DBContext生成器,並且確保在設計時和運行時的上下文配置中在模型屬性上啓用了lazyloading。儘管如此,我的房產拒絕延遲加載。延遲加載不能與使用EF5.x生成的實體一起工作DBContext生成器

我設置了一個基本的例子。表A與表B有一對多的關係。模型生成的代碼包含實體A中的可重寫/虛擬ICollection屬性,用於此關係。然後我做一個Find()來加載一個實體A,並且訪問這個關係(比如objA.EntityBList.Count()),但是這個集合總是空的。如果我加載entityB它的entityA屬性總是沒有。

這應該是這樣的工作嗎?以前我主要使用ObjectContext,所以這對我來說有點新鮮。


在進一步的測試中,似乎我的簡單示例確實有效,所以問題似乎與特定的edmx文件有關。所以這個問題變成了爲什麼一個edmx文件不會生成支持延遲加載的模型?我可以看到,各種物化方法正在生成POCO對象,而不是代理,這解釋了爲什麼懶加載不起作用,但爲什麼我不能獲得代理。該配置表明代理已啓用。

回答

0

經過一番摸索,包括從頭開始重新創建模型,這在新的解決方案中有所幫助,但沒有在原來的解決方案中,我找到了解決方案。最後,模型中大約有12個實體沒有被創建爲代理,其餘都沒有問題。看起來,這些在迄今爲止忘記部分課程中的每一個都定義了「朋友小組新」。刪除了這一切,一切都很好。所以我想要學習的教訓是擺脫作爲第一步所附帶的任何額外的行李。