很明显,我错误地说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 ...等。