或者您是否定义了包含Root Entity对象的新对象?
public class SomeAggregateName()
{
public EntityRoot root {get;set;}
public Entity entity {get;set;}
}
OR这是Aggregate隐含的吗?
public class EntityRoot()
{
public Entity entity {get;set;}
}
答案 0 :(得分:3)
通常暗示汇总 - 即,它是实体。
您的示例会让您更难以理解,因为您实际上没有域名。
但让我们来看一个包含OrderLines的Order Aggregate Root的经典示例。订单是一个实体 - 它也是聚合根。 OrderLine包含在Order Aggregate中,因此无法直接在Order Aggregate之外访问。
// This is the Order Aggregate Root
public class Order
{
private IList<OrderLine> OrderLines { get; set; }
}
答案 1 :(得分:0)
相关问题:
如果我想使用FluentNHiberanate,例如,初始化我的域实体,它需要我的Order类看起来像这样:
public class Order
{
public virtual IList<OrderLine> OrderLines { get; set; }
}
这违反了聚合内部实体的封装。 关于如何在不破坏封装的情况下做任何想法?
确定找到了(可用的解决方案之一), 将OrderLines成员更改为private并将其添加到映射文件中:
HasMany(Reveal.Property<Order, IEnumerable<OrderLine>>("OrderLines"))
.Inverse()
.Cascade
.All();