私はこれに関する回答をよく調べましたが、いくつかの質問はこれができないことを示唆しています。
子コレクションを使用した Nibernate プロジェクション
NHibernate QueryOver プロジェクション - DTO へのコレクションのプロジェクション
NHibernate Projections - コレクションを投影する方法
だから私は、子コレクションを私のDTOに投影するための良い回避策は何だろうと思っていました. 2 つの別々のプロジェクションを実行し、手動で子を親に追加する必要がありますか?
私は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>();
子コレクション全体にマップするにはどうすればよいですか? どうもありがとう。