我已经仔细查看了这个问题的答案,有几个问题表明这无法完成。
NHibernate QueryOver 投影 - 将集合投影到 DTO
NHibernate Projections - 如何投影集合
所以我想知道将子集合投影到我的 DTO 将是一个很好的解决方法。我需要运行两个单独的投影并手动将孩子添加到父母吗?
我正在使用 NH 3.3.1 我有以下 DTO 数据结构
public class ProviderDto
{
public int Id { get; set; }
public string Name { get; set; }
public IList<EmployerDTO> Employers { get; set; }
}
public class EmployerDTO
{
public int Id { get; set; }
public string Name { get; set; }
}
我想通过投影将我的提供者和雇主域实体映射到这个结构。(在这个简单的场景中,我的域实体与我的 dto 非常相似)
Employer employerAlias = null;
Provider providerAlias = null;
ProviderDto providerDto = null;
var dto = session.QueryOver<Provider>(() => providerAlias)
.JoinAlias(x => x.Employers, () => employerAlias)
.Where(()=> providerAlias.Id == 1)
.Select(Projections.ProjectionList()
.Add(Projections.Property(() => providerAlias.Id).WithAlias(() => providerDto.Id))
.Add(Projections.Property(() => providerAlias.Name).WithAlias(() => providerDto.Name))
//This is where I cannot project my child employer collection
.TransformUsing(Transformers.AliasToBean<ProviderDto>()).List<ProviderDto>();
我如何映射子集合?非常感谢。