7

我希望爲新項目使用實體框架代碼優先。所以我決定做一些研究,並建立一些演示,以便我可以看到它的做法。通過,我有一個主要問題或可能更多的東西,我不明白,涉及實體框架代碼的方式 - 第一映射到實體和域驅動設計。實體框架代碼優先映射如何反映域驅動設計?

當我們構建一個應用程序時,我們定義了域實體。 (我們根據聽到的商業情況定義聚合根和它們的倉庫)

沒關係,但實體框架代碼優先映射似乎像實體之間的關係方式一樣工作。那麼兩者如何共存呢?

作爲一個例子(在域驅動設計側的思考):

雜誌包含JournalEnty包含任務問題筆記

斜體字是實體。在某種程度上,經過分析,我會說日誌是聚合日記和日記的聚合根,因爲這是一個直接組合。每個任務都包含一個小時值,以瞭解完成任務需要多少小時,因此有很多方法可以計算總小時數以及來自此的工資。該雜誌具有小時費率財產。

其他實體每個都是一個聚合根,他們可能會有一個參考journalentry,所以我們知道任務,筆記和問題屬於哪裏。

但問題來到這裏..實體框架代碼優先映射如何反映這一點?從直觀的角度來看,我們可以說日誌包含日記條目,日記條目包含註釋,問題和任務。但從DDD的觀點來看,可能並非如此。糾正我,如果我錯了,但代碼優先像關係數據庫一樣工作。

那麼我們如何將上面的代碼映射到代碼優先?

非常感謝。

回答

2


我認爲,如果每個域實體在數據庫中都有對應的表,那並不壞。這並不意味着它是關係結構,因爲日記對象具有JournalEntity屬性(在關係結構journalEntity中只有JournalID)。 此外,可以將對象層次結構映射到一個表並在映射中創建複雜類型。這意味着您可以有更復雜的映射方案,然後每個表的類。

這裏是ScottGu的博客文章。