2012-03-28 23 views
5

我有一個POCO實體,我在其上定義了一個自定義構造函數。我還實現了默認的構造函數,以便Entity Framework可以在我從數據庫請求一個副本時成功提供對象水合物。防止延遲加載的POCO實體上的私有構造函數

這似乎工作正常,但是當我將默認構造函數設置爲private(強制我的代碼使用自定義版本)並從數據庫請求實體時,我似乎無法瀏覽相關實體因爲它們全都是空的。

這似乎是一個懶加載問題,所以我可以更改我的存儲庫,以加載我需要的相關對象,但我想知道是否有更好的方法來隱藏客戶端代碼的默認構造函數,同時允許實體框架懶惰加載?

回答

9

如果您定義私有構造violate requirements創建POCO代理負責延遲加載:

自定義數據類中必須有 沒有參數的公共或受保護的構造。

所以最好的選擇是使用受保護的構造函數或不使用延遲加載。

+0

受保護的構造函數很好,謝謝。 – James 2012-03-28 13:43:08