Итак, у меня есть проблема на данный момент, которая либо до AutoMapper, либо моего NHibernate-запроса, либо проекта Domain/DTO.Проблемы с извлечением/automapper NHibernate
Проблема заключается в том, что когда я делаю выборку, например ObjectA содержит список объектов ObjectB, а ObjectB имеет свойство родительского объекта ObjectA. Когда у меня есть запрос, который делает надежную выборку в свойстве ObjectB моего объекта ObjectA, тогда я могу бесконечно вечно использовать A.B.A.b.A.B.A.B и так далее.
Это означает, что при попытке сопоставить объект домена с DTOA, который содержит ту же самую сделку, DTOA имеет список DTOB, а DTOB имеет свойство его родительского DTOA. Мои службы тайм-аут при возврате этого, потому что я считаю, что я использую AutoMapper для сопоставления DomainA с DTOA, а затем потому, что DTOA.DTOB.DTOA.DTOB и т. Д. Заполняет бесконечную сериализацию.
В любом случае лучшее, что я уверен, это старая классическая проблема, но я изо всех сил пытаюсь найти правильные вещи для ввода в мой старый друг google. Могу ли я заставить AutoMapper игнорировать родительский экземпляр в дочернем элементе, желательно, даже если я могу заставить Nhibernate получить список, но сохранить прокси-сервер в родительском свойстве. Наихудшим решением будет изменение объекта домена с объектами для конкретных сценариев или специальной логики.
Любая благодарная благодарность.
EDIT - КОД
Mapping код
Mapper.CreateMap<DTOA, DomainA>();
Mapper.CreateMap<DomainA, DTOA>()
.ForMember(dst => dst.AProperty,
opts =>
opts.ResolveUsing<LazyLoadResolver>().FromMember(src => src.AProperty));
объект домена DomainA
/// <summary>
/// Data Transfer Object, object representing a user
/// </summary>
public class DomainA
{
/// <summary>
/// Gets or sets the clans.
/// </summary>
/// <value>The clans.</value>
public virtual IList<DomainB> AProperty{ get; set; }
}
объект домена DomainB
/// <summary>
/// DTO for clan members
/// </summary>
public class DomainB
{
/// <summary>
/// Gets or sets the ID.
/// </summary>
/// <value>The ID.</value>
public virtual int ID { get; set; }
/// <summary>
/// Gets or sets the user.
/// </summary>
/// <value>The user.</value>
public virtual DomainA BProperty{ get; set; }
}
Nhibernate запрос
return session.QueryOver<DomainA>()
.Where(a => a.ID == id)
.Fetch(a=> a.AProperty).Eager
.List<DomainA>().FirstOrDefault();
службы WCF оператор возврата
return AutoMapper.Map<DomainA, DTOA>(returnedDomainA);
Выполнение этого запроса с выборки и что доменная структура DTO и автоматическая настройка картографа означает мои услуги раз из без ошибок, я полагаю, как его пытаясь сериализоваться и бесконечно зацикливаться, без извлечения и списка, равного нулю, все работает нормально, конечно
, пожалуйста, напишите свой существующий код – Paul
Хорошо, просто голый со мной – Rosslee