很明顯,我錯誤地說DDD與EAV/CR的用處相似,但我目前看到的唯一區別是每個實體都有大量連接而不是三個表和大量連接的物理表。DDD值對象:如何在沒有大量SQL連接的情況下堅持實體對象?
這一定是由於我缺乏對DDD的理解。 在導入數據時,如何將這些對象物理存儲到數據庫中,而無需大量連接和複雜化?我知道你可以簡單地創建提供給你的存儲庫的對象,但是很難培訓像Microsoft Sql Server Integration Server這樣的工具來使用你自定義的C#對象和框架。也許這應該是我的問題,你如何使用Microsoft SQL Server集成服務和報表服務使用DDD ASP.NET C#框架?大聲笑。
在EAV/CR數據庫中,我們可以根據人員類型設置具有不同類別的單個人員表格:供應商,客戶,買方,代表,公司,看門人等。三個表,一些聯結,屬性在我們插入之前,總是與驗證字符串一樣,就像MVC中的ModelValidation一樣,對象接受任何值但不會持續到有效。
在一個標準的關係模型中,我們用來爲每種類型的實體創建一個表,混合冗餘數據類型,如城市。
使用域驅動設計,我們使用對象來表示每種類型的實體,每種類型的ValueObject嵌套對象,以及更多的嵌套對象。在我的理解中,這導致每種實體的表格和每種信息集合(一個值對象)的表格。有了這些表格,我看到很多連接。我們還最終爲每個新的聯繫人類型創建一個物理表。顯然有更好的方法,所以我必須在如何將對象持久化到數據庫時不正確。
我的供應商是這樣的:
public class Vendor {
public int vendorID {get; set;}
public Address vAddress {get; set;}
public Representative vRep {get;set;}
public Buyer vBuyer {get; set;}
}
我的買家:
public class Buyer {
public int buyerID {get; set;}
public Address bAddress {get; set;}
public Email bEmail {get; set;}
public Phone bPhone {get; set;}
public Phone bFax (get; set;}
}
我們是否真的引用之類的東西Vendor.vBuyer.bPhone.pAreaCode?我認爲我們會參考並存儲Vendor.BuyerPhoneNumber,並將這些對象幾乎像別名一樣構建到這些部分:Vendor.Address1,Vendor.Address2,Vendor.BuyerPhoneNumber ...等。