2011-01-30 61 views
0

我現在有分裂EDM跨多個項目

的實體使用的ASP .NET MVC/EF4項目包含多件自治功能,如博客,活動,競賽,維基等功能重用每個系統都通過一個巨大的EDM文件映射到我的數據庫。

這適用於主站點,但我也有一些個人站點,我只想重用mains ite中的博客功能。

我最大的問題是,由於mac daddy EDM文件,我的博客網站必須不斷更新其數據庫模式,以反映他們不使用的功能區域所做的更改(即更改爲事件系統) 。

唯一的其他疑難雜症的是,有一些實體(用戶和標籤),其具有與每個功能區域實體之間的關係,很難簡單地關分割的功能各區域到它自己的EDM。

所有這些說,我試圖找出最有效的方式來設置它。

我要下去分裂電子文件管理系統的道路各區域(博客,活動,競賽,維基),並想辦法來維護用戶和標籤實體之間的關係?

或者我應該爲每個網站創建一個EDM,它只映射實際需要的實體?唯一的問題是我的存儲庫層需要一個UnitOfWork/ObjectContext,並且通過爲每個站點創建新的ObjectContexts,我有問題重複使用我的存儲庫代碼。

+0

您的站點應該對視圖模型工作。只有在控制器中,您纔會使用注入(DI,IoC)來推入您的存儲庫,這些將與EF上下文交互。如果您開始以這種方式思考問題 - 讓應用程序根本無需與數據存儲相關聯(稍後提供,無論您如何解決問題都無關緊要,無論是EF到SQL Server,XML存儲,等等。)。如果您在分解電火花時遇到問題,請花一些時間修理數據庫模式,規範化等。問題很可能源於此。 – mare 2011-01-30 15:05:13

回答

0

您可以設置WCF服務,然後通過JSON合約傳遞您的數據。這樣你就可以擁有一箇中央服務來存儲你的EF數據,然後根據你的不同應用程序的需要公開功能。

它的更短期的設置工作(希望你的服務/存儲庫層是用IoC來完成的,以便它可以很容易地插入),但是如果你的EF數據改變很多,這意味着你可以更新一箇中心服務,而無需更新每個客戶端應用程序。

在S.O上有一個很好的參考線程:https://stackoverflow.com/questions/973017/where-to-find-good-wcf-video-tutorials