3

我正在嘗試使用帶遷移的EF 4.3構建一個網絡平臺(一個CMS之王)。所以我想把我所有的工作從其他項目中分解出來,比如電子商店,時事通訊,博客等等。到包含這些模型的單獨的ClassLibrary項目中(也許稍後再構建一些NuGet包)。我希望能將它們集成到我的自定義mvc3模板中,然後爲我的控制器和視圖使用一些高級腳手架。因此,首先我有一個MVC3自定義模板,它具有包含我的身份驗證模型(一些存儲庫和一些具有兩個實體框架對象的自定義提供程序:使用「BaseDataContext」的用戶和角色)的ClassLibrary項目。 另外我還有另一個名爲Blog的ClassLibrary項目,它包含我的博客模型(所有EF POCO's,一些存儲庫和「BlogDataContext」)我也使用IoC。使用EF設計一個帶有模塊的網絡平臺4.3

我遇到的第一個問題是Circular Dependecy,如果我想讓我的Blog.Author從我的Template.User和我的用戶POCO繼承,我需要從我的博客到我的模板以及從我的模板返回到我的博客的參考包含對我的作者的引用。 我知道身份驗證和博客模型在同一個「級別」上,並且應該位於同一個類庫中,但請記住,應允許稍後添加更多的庫(例如「通訊」庫),我不能將實體分解成一個單獨的lib。 我想到的第二個問題是使用多個DataContext,但這是另一個主題。

所以最後我的問題不是很具體。這更多的是一個建築設計問題。 我試圖實現甚至可能嗎?或者是否可以安全地嘗試找到CircularDependency問題的解決方案? 如果不是我應該如何設計「CMS」,或者我應該如何簡化重用我的工作。 (遷移功能似乎很有趣,例如,如果您有一個可用的電子商店並且客戶端請求添加博客)

在此先感謝您。

+0

嗨,這是不正確的; - 相同的「級別」,並且應該在同一個類庫中 - 如果我們談論EF 4.3,則可以爲實體模型使用不同的類庫。 – 2012-04-02 08:10:32

回答

1

我會研究解耦你的整個設計,使所有的邏輯單元(單點登錄,cms,電子通信,報告等)相互獨立,並找出如何以最少量的數據可能。例如,您可以將經過身份驗證的用戶的GUID傳遞給CMS,而不是整個用戶對象。 一旦你弄明白了,使用WCFWF你可以編排說通信,創建工作流程等。你將獲得的最大優勢是你的平臺將是可插拔和可擴展的,你可以添加或刪除組件,取決於你的需要或添加和根據您的負載刪除資源。