我新的領域驅動設計,並努力學習,在我的項目中實現共享實體。我的項目結構到目前爲止與此類似,領域驅動設計 - 跨越限界上下文
修的文件夾
Maintainance.Data(類 庫)
Maintainance.Domain(類庫)
Maintainance.Domin.Tests(測試項目)MovieBooking文件夾
MovieBooking.Data(類 庫)
MovieBooking.Domain(類庫)
MovieBooking.Domain.Tests(測試項目)SharedKernel
共同的東西Web應用程序
MovieBooking MVC的Web 應用(其具有參考MovieBooking域)
在修的boundned方面我保持所有的CRUD,對於比如說電影,鄉村,類別,在修的的DbContext子目錄實體GETALL類的東西。 現在在MovieBooing數據層我還需要使用這個實體(主要是爲了顯示名稱或下拉鑑於罷了,那種子集所需的 - 並不是所有的屬性需要,只有少數像編號,名稱)
有幾種方法我可以訪問此實體在電影訂票界上下文
通過Web服務 - 需要爲喜歡電影,鄉村,類別,子目錄常見的實體網絡API和調用Web項目的Web API(填寫下拉框或獲取從實體名稱)
通過參考上下文(單獨的DbContext) - 需要配置Dbset,然後將數據庫視圖(僅需要字段)映射到Dbset 示例:
modelBuilder.Entity()。ToTable(ViewName);
對於(1),它可以是長期的implmentation解決方案,我
(2)我要創建視圖(只有少數屬性)爲每個需要的表,它會增加我的意見數我的DB,因爲我有企業級應用程序。
是否有其他方法可以讓我做到這一點?我在DDD中找不到任何東西?
謝謝您的回覆。我打算看看你建議的這本書(橙色)。 對於點(2) - 配置Dbset,然後將一個數據庫視圖(僅需要字段)映射到Dbset,我已經從 轉到本文https://msdn.microsoft.com/en-us/magazine/jj883952 .aspx以及來自pluralsight的課程:企業中的實體框架 您對選項2的看法是否真實?如果我們不在同一條路上,請提出建議。 我覺得我有點失落,在黑暗中尋找一些光:) :)可能是這本書成爲光線對我來說! – vibs
關鍵是業務邏輯的隔離,而您參考的文章實際上討論將大的dbcontext分解爲更小的_independent_,這與我上面的建議完全一致。共享表允許一個BC改變另一個的狀態,這實際上違反了保證另一個BC的聚合內的事務一致性的可能性。 – SKleanthous
爲了進一步解釋,你可以共享db(但不是db上下文),並且在每個BC中都有單獨的數據庫上下文,而不同的BC中的數據庫上下文將無法訪問相同的表。如果你沒有按順序進行事件採購,這是非常好的,但我發現如果可能的話,最好還要隔離db,這有助於能夠獨立部署每個服務而不會影響其他服務。 – SKleanthous