Automapper を使用して、NHibernate プロキシ オブジェクト (DTO) を CSLA ビジネス オブジェクトにマップしています
Fluent NHibernate を使用してマッピングを作成しています - これは正常に動作しています
私が抱えている問題はOrder
、 に のコレクションがOrderLines
あり、これらのそれぞれに への参照があることOrder
です。
public class OrderMapping : ClassMap<OrderDTO>
{
public OrderMapping()
{
// Standard properties
Id(x => x.OrderId);
Map(x => x.OrderDate);
Map(x => x.Address);
HasMany<OrderLineDTO>(x => x.OrderLines).KeyColumn("OrderId").Inverse();
Table("`Order`");
}
}
public class OrderDTO
{
// Standard properties
public virtual int OrderId { get; set; }
public virtual DateTime OrderDate { get; set; }
public virtual string Address { get; set; }
// Child collection properties
public virtual IList<OrderLineDTO> OrderLines { get; set; } <-- this refs the lines
}
と:
public class OrderLineMapping : ClassMap<OrderLineDTO>
{
public OrderLineMapping()
{
// Standard properties
Id(x => x.OrderLineId);
References<OrderDTO>(x => x.Order).Column("OrderId");
Map(x => x.Description);
Map(x => x.Amount);
Table("`OrderLine`");
}
}
public class OrderLineDTO
{
// Standard properties
public virtual int OrderLineId { get; set; }
public virtual string Description { get; set; }
public virtual decimal Amount { get; set; }
public virtual OrderDTO Order { get; set; } // <-- this refs the order
}
これらの DTO オブジェクトは、それぞれOrder
およびOrderLines
CSLA オブジェクトにマップされます。
OrderLines
のリストへの自動マッピングOrderLinesDTO
がマッピングされている場合。次に、自動マッパーは"Order"
行のプロパティをマッピングします。これは にマップされ、Order
次に に循環的にマップされOrderLine
、次に にマップOrder
されます。
Automapper がこの循環参照を回避できるかどうかは誰にもわかりませんか?