English 中文(简体)
实例化根实体时,是否创建聚合对象?
原标题:
  • 时间:2009-04-03 18:13:14
  •  标签:

或者您定义了一个包含根实体对象和其他对象的新对象?

public class SomeAggregateName()
{
   public EntityRoot root {get;set;}
   public Entity entity {get;set;}
}

或者这是隐含的聚合吗?

public class EntityRoot()
{ 
   public Entity entity {get;set;}
}
问题回答

聚合通常是隐含的,即它是实体。

你的例子让你更难理解,因为你实际上还没有一个域。

但是,让我们举一个包含OrderLines的Order Aggregate Root的经典示例。订单是一个实体,也是聚合根。OrderLine包含在订单聚合中,因此不能在订单聚合之外直接访问。

// This is the Order Aggregate Root
public class Order
{
    private IList<OrderLine> OrderLines { get; set; }
}

一个相关的问题:

例如,如果我想使用FluentNHibernate来初始化我的域实体,它需要我的Order类如下所示:

public class Order
{
    public virtual IList<OrderLine> OrderLines { get; set; }
}

this violates the encapsulation of the aggregate s internal entities. Any ideas on how to do it without breaking the encapsulation?


OK found it (one of the available solutions), change OrderLines member to private and add this to the mapping file:

HasMany(Reveal.Property<Order, IEnumerable<OrderLine>>("OrderLines"))
.Inverse()
.Cascade
.All();




相关问题
热门标签