У меня есть два класса DTO как эти:Использование целевой DTO с вложенными DTO для Transformers.AliasToBean в NHibernate
public class Mailing
{
public string MailingType {get;set;}
public DateTime? ValidUntil {get;set;}
public Address MailAddress {get;set;}
}
и
public class Address
{
public string Street {get;set;}
public string StreetNumber {get;set;}
public string ZIP {get;set;}
}
В соответствии субъекты simliar с идентичными многие-к-одному связь.
Теперь я хочу прочитать список Mailing
с одним запросом, предотвращая ручную конструкцию DTO с foreach. Что-то вроде этого:
return this.session.QueryOver<MailingEntity>()
.JoinAlias(p => p.Address,() => addressAlias)
.Where(...)
.SelectList(list => list
.Select(p => p.Type).WithAlias(() => mailingDTO.MailingType)
.Select(p => p.ValidTo).WithAlias(() => mailingDTO.ValidUntil)
.Select(() => addressAlias.Street).WithAlias(() => addressDTO.Street)
.Select(() => addressAlias.ZIP).WithAlias(() => addressDTO.ZIP)
.Select(() => addressAlias.StreetNumber).WithAlias(() => addressDTO.StreetNumber)
.Select(() => addressDTO).WithAlias(() => mailingDTO.MailAddress)
.TransformUsing(Transformers.AliasToBean<Mailing>())
.List<Mailing>();
который не работает. Есть ли способ получить вложенные DTO, подобные этому, или у меня есть для пользователя несколько roudtrips соответственно вручную создать DTO?
Спасибо, хорошая идея. Я проверю его и даю обратную связь ... –
@Andreas H. Обратная связь не найдена – kerzek
Я успешно использовал этот подход, однако у меня была проблема при выполнении подвыборки внутри подвыборки, т.е. родительская> дочерняя коллекция> дочерняя коллекция. При запросе третьего уровня я получил исключение: «код должен быть недоступен» –