2013-08-28 119 views
5

我試圖實現多個DDD有界的上下文作爲概述here。這是一個例子上下文:實體配置管理與DDD有界的上下文

Sample Context

我具有用於與適當FluentAPI映射每個實體的實體類型的配置文件(使用EF工裝反向工程)。這些配置文件還包含關係配置。

例如爲:UserMap.cs

// Relationships 
this.HasOptional(t => t.SecurityProfile) 
    .WithMany(t => t.Users) 
    .HasForeignKey(t => t.SecurityProfileCode); 

SecurityProfileDomainPermission不是在上下文DbSets。由於導航屬性分別爲UserModule,它們會自動進入模型。

這會導致我的第一個問題。當添加User(或任何其他實體)的任何其他方面,我要記住做兩件事情之一:

  1. 而且配置添加到模型構建器SecurityProfile(和實體所有其他關係)

  2. 從模型中明確地排除了SecurityProfile

這開始變成了一個維修噩夢。

我會滿意明確「修剪」實體圖,如上面第2點所述。

但是,在實體配置文件中已經定義關係時,似乎不可能對Ignore()實體進行定義。

對於上述背景下OnModelCreatingmodelBuilder.Ignore<SecurityProfile>();嘗試提供了以下錯誤在ConfigureAssociations()

System.InvalidOperationException:導航屬性「SecurityProfile」不是對類型「用戶」聲明的屬性。驗證它是否未明確從模型中排除,並且它是有效的導航屬性。

我能想到的唯一解決方案是繼承基礎配置類並覆蓋每個上下文中的關係配置。考慮到我們可能會以30-40 +單獨的上下文結束,這也可能成爲維護的噩夢。

另外,我可以爲每個上下文都有非常具體的實體模型,但是這又會導致實體類爆炸並導致重複配置中的潛在維護問題。

如何在實現有界的上下文時最好地管理和維護實體及其實體配置?

+2

奇怪的是,有人會投票結束考慮[EF項目網站](http://entityframework.codeplex.com/discussions)指出「有關在您的應用程序中使用實體框架的問題,請發表Stack Overflow的問題實體框架標籤「。 –

+0

如果你看近距離投票,你會發現它是「太寬泛」。我同意這一點。你有三個問題,而不是一個。一個側面說明:DDD說,你的實體應該堅持你的企業沒有的無知,因爲你顯然必須改變它們,以便它們符合EF的要求。 – jgauffin

+0

@jgauffin我很樂意將3個問題壓縮到第3個問題。然而,這不是一個簡單的「我該怎麼做」的問題,背景信息對所有3個問題都有幫助。所以它是「太寬」的原因是無效的,因爲考慮到SO是推薦這些類型的問題的出路。也許這是一個開源項目劫持SO作爲他們的社區頻道的問題。但似乎沒有任何其他選擇,這是我希望得到迴應的唯一渠道。 –

回答

0

此處添加由於太長了一點意見:

這是非常(UN?)有趣的是,你所指的文章顯然是試圖通過提到一個新的流行詞DDD來跳上潮流,隨後只顯示DTO/POCO對象如何在上下文中持久化。這與DDD完全沒有關係。

域驅動設計主要是關於行爲和封裝(基礎設施隔離/無知)模型,這些模型經過反覆探索和完善以解決特定角色的特定問題,並在問題域的ubiquitous language中表示。

這些模型通常不直接映射某種類型的持久性模型,也不應該關注這些模型。在有界情境下對聚合根進行的操作通常將與事務邊界一致。

我建議您觀看Eric Evan關於skillsmatter(關鍵字DDD eXchange)的一些網絡廣播,以便了解DDD需要什麼,有界的上下文和聚合根是什麼。之後,你也應該閱讀他的書,這是一個很棒的閱讀。但是你需要他最近的觀點(如這些網絡廣播所表達的),而不是陷入專注於技術構建塊的陷阱。

+0

我已閱讀[this](http://www.infoq.com/minibooks/domain-driven-design-quickly)Evans支持他的DDD摘要書,並充分看到你的觀點。然而,考慮到所有這些因素,我的模型實際上是獨立於技術的,並且在某些時候需要將其保存到數據庫中。這是持續戰略的管理,同時保持DRY原則,我正在尋找答案。擁有不同模型但具有不同關係的「相同」實體會導致映射重複問題和潛在的未來維護頭痛。 –

+0

@BrettPostin你可能仍然想看看我提到的網絡廣播,我相信他們可能會睜大眼睛(我剛剛查看過,不幸的是他2008年的優秀介紹視頻以及他的其他谷歌文檔主持演員都離開了,但至少看了這隻有15分鐘,並表達了Eric最近的一些經驗和觀點:http://skillsmatter.com/podcast/design-architecture/welcome-eric-evans)。 – Alex

相關問題