Я использую 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 избежать этой циклической ссылки?
[IgnoreMap]
свойство, которое вызывает круг? - person Marc Gravell   schedule 16.07.2012[IgnoreMap]
. Я создаю код для некоторых классов, поэтому я посмотрю, смогу ли я подключить это к генератору, если он работает. - person Charleh   schedule 16.07.2012[IgnoreMap]
всегда игнорирует сопоставление со свойством - я хочу иметь возможность сопоставлять свойствоOrder
с моимOrderLines
, но это свойствоOrder
содержит ссылку на родителя строк, поэтому существует циклическая ссылка - person Charleh   schedule 16.07.2012