比方说,我有典型的实体汽车DDD:亚类根实体
class Car : Entity
{
public double MaxSpeed { get; set; }
public Color Color { get; set; }
/* ... */
}
这个实体,在我的域模型,将是一个聚合的根实体。
现在让我们说我专注于汽车。我创建了一个法拉利,和法拉利的车主高兴通过像一个绰号叫他们:
class Ferrari : Car
{
public string Nickname { get; set; }
}
比方说,我有另外一个实体,在公司实体。这将是根实体的另一个总计。有很多人在一家公司工作,由实体人代表。人可能有汽车。但公司的总统通常是非常丰富,这样的人,他们有法拉利:
class President : Person
{
public Ferrari Ferrari { get; set; }
}
在这种情况下,我有实体总统,谁是内的公司汇总,这是持有一个法拉利的参考,专业化的另一个聚合的根实体。
鉴于DDD,这是否正确?可以/我应该考虑将根实体本身作为同一个聚合的根实体吗?我的意思是,在我所描述的领域中,实体法拉利也是汽车总成的根本实体(因为法拉利也是汽车)?
现在,让我们说,我要坚持这个模型到数据库。我认为我的问题不依赖于我将使用的OR/M框架。
我应该如何建造桌上持有汽车?我是否应该建立一个带有“CarType”列的Cars Cars(可能的值:“Car”,“Ferrari”)和一个可以为空的昵称列?
或者我应该为Cars创建一张桌子,为Ferraris创建一个桌子,后者的PK有FK的Cars?
谢谢!
太棒了!谢谢!事实上,在我的“真实”系统中,“汽车”是非常重要的,但“法拉利”是我的领域中唯一最重要的东西,我不能疏忽跟踪,我必须对其进行统计。 – 2009-08-29 21:55:43