我試圖實現多個DDD有界的上下文作爲概述here。這是一個例子上下文:實體配置管理與DDD有界的上下文
我具有用於與適當FluentAPI映射每個實體的實體類型的配置文件(使用EF工裝反向工程)。這些配置文件還包含關係配置。
例如爲:UserMap.cs
// Relationships
this.HasOptional(t => t.SecurityProfile)
.WithMany(t => t.Users)
.HasForeignKey(t => t.SecurityProfileCode);
SecurityProfile
和DomainPermission
不是在上下文DbSets
。由於導航屬性分別爲User
和Module
,它們會自動進入模型。
這會導致我的第一個問題。當添加User
(或任何其他實體)的任何其他方面,我要記住做兩件事情之一:
而且配置添加到模型構建器
SecurityProfile
(和實體所有其他關係)從模型中明確地排除了
SecurityProfile
。
這開始變成了一個維修噩夢。
我會滿意明確「修剪」實體圖,如上面第2點所述。
但是,在實體配置文件中已經定義關係時,似乎不可能對Ignore()
實體進行定義。
對於上述背景下OnModelCreating
modelBuilder.Ignore<SecurityProfile>();
嘗試提供了以下錯誤在ConfigureAssociations()
:
System.InvalidOperationException:導航屬性「SecurityProfile」不是對類型「用戶」聲明的屬性。驗證它是否未明確從模型中排除,並且它是有效的導航屬性。
我能想到的唯一解決方案是繼承基礎配置類並覆蓋每個上下文中的關係配置。考慮到我們可能會以30-40 +單獨的上下文結束,這也可能成爲維護的噩夢。
另外,我可以爲每個上下文都有非常具體的實體模型,但是這又會導致實體類爆炸並導致重複配置中的潛在維護問題。
如何在實現有界的上下文時最好地管理和維護實體及其實體配置?
奇怪的是,有人會投票結束考慮[EF項目網站](http://entityframework.codeplex.com/discussions)指出「有關在您的應用程序中使用實體框架的問題,請發表Stack Overflow的問題實體框架標籤「。 –
如果你看近距離投票,你會發現它是「太寬泛」。我同意這一點。你有三個問題,而不是一個。一個側面說明:DDD說,你的實體應該堅持你的企業沒有的無知,因爲你顯然必須改變它們,以便它們符合EF的要求。 – jgauffin
@jgauffin我很樂意將3個問題壓縮到第3個問題。然而,這不是一個簡單的「我該怎麼做」的問題,背景信息對所有3個問題都有幫助。所以它是「太寬」的原因是無效的,因爲考慮到SO是推薦這些類型的問題的出路。也許這是一個開源項目劫持SO作爲他們的社區頻道的問題。但似乎沒有任何其他選擇,這是我希望得到迴應的唯一渠道。 –