2

有沒有一種方法來實現依賴注入與實體框架和延遲加載?實體框架和構造函數注入延遲加載

我知道你掛鉤到ObjectStateManagerChanged的方法,但我想使用構造函數注入來代替,並讓我的模型實體不知道任何IOC容器。 (比方說,我已經分離了BLL和DAL,並希望保留我的BLL以儘可能少的外部依賴)。

謝謝。

+1

防止在您的實體中完全使用依賴注入。相關:http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec – Steven

+0

我同意......但我需要實現可配置的安全上下文。簡單的例子:我想從外部應用程序管理訪問級別以建模(對某些實體類型/屬性的讀/寫權限)。 –

+2

嘗試使用[命令/處理程序模式](http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91)編寫業務操作。通過定義一個通用接口,您具有很好的可擴展性,並且可以通過實現一個簡單的裝飾器來實現安全檢查。 – Steven

回答

3

防止在您的實體中完全使用依賴注入。以this SO question爲例。

嘗試使用command/handler pattern編寫業務操作。通過定義一個通用接口,您具有很好的可擴展性,並且可以通過實現一個簡單的裝飾器來實現安全檢查。

爲了防止UI開發人員訪問他們不應該訪問的數據,編寫包裝命令處理程序(和query handlers)的一個(或多個)裝飾器,並阻止從業務層返回具有延遲加載功能的實體。而是返回DTO s。這樣業務層就可以完全控制。

1

您不能在EF中使用構造函數注入。當從數據庫記錄實現實體時,EF始終使用默認構造函數。在這種情況下,您唯一的選擇是使用ObjectMaterialized事件ObjectContext,並在您的實體中使用屬性傳遞您的初始化數據。

您應該遵循@ Steven的評論來實現您所需要的邏輯。

+0

感謝您提出的所有意見和建議,他們已被認爲已經。問題在於技術的特殊組合 - 惰性EF + DI。無論如何,我得到了我的答案,即使他們是負面的。再次感謝你。 –

相關問題