2012-05-13 1 views
0

imはQueryOverを使用してクエリを実行しようとしていますが、フェッチを使用して変換を実行しようとしています。変換を使ってNHibernateをフェッチする

しかし、イム当たっエラー

HSPTransactionDto hspTransactionDto = null; 
    var hspTransactionDtoList = 
     Session.QueryOver<Transaction>() 
      .Where(x => x.TransactionStatus == TransactionStatus.Draft) 
      .Fetch(x => x.HealthServiceProvider).Eager 
      .Fetch(x => x.HealthMaintenanceOrganization).Eager 
      .SelectList(list => list 
            .Select(x => x.Id).WithAlias(() => hspTransactionDto.Id) 
            .Select(x => x.Version).WithAlias(() => hspTransactionDto.Version) 
            .Select(x => x.HealthServiceProvider.Id).WithAlias(() => hspTransactionDto.HSPId) 
            .Select(x => x.HealthServiceProvider.Name).WithAlias(() => hspTransactionDto.HSPName) 
            .Select(x => x.HealthMaintenanceOrganization.Id).WithAlias(() => hspTransactionDto.HMOId) 
            .Select(x => x.HealthMaintenanceOrganization.Name).WithAlias(() => hspTransactionDto.HMOName) 
            .Select(x => x.HSPPatientCode).WithAlias(() => hspTransactionDto.HSPPatientCode) 
            .Select(x => x.PatientFirstName).WithAlias(() => hspTransactionDto.PatientFirstName) 
            .Select(x => x.PatientMiddleName).WithAlias(() => hspTransactionDto.PatientMiddleName) 
            .Select(x => x.PatientLastName).WithAlias(() => hspTransactionDto.PatientLastName) 
      ) 
      .TransformUsing(Transformers.AliasToBean<HSPTransactionDto>()).List<HSPTransactionDto>(); 
    return hspTransactionDtoList; 

誰でも助けることができますか?

は、実際の答えはちょうど私がクリーンな方法を知っている

HSPTransactionDto hspTransactionDto   = null; 
    HealthMaintenanceOrganization hmoAlias  = null; 
    HealthServiceProvider hspAlias    = null; 
    var hspTransactionDtoList = 
     Session.QueryOver<Transaction>() 
      .Where(a => a.TransactionStatus == TransactionStatus.Draft) 
      .Fetch(b => b.HealthServiceProvider).Eager 
      .Fetch(c => c.HealthMaintenanceOrganization).Eager 
      .JoinAlias(x=> x.HealthMaintenanceOrganization,() => hmoAlias) 
      .JoinAlias(x => x.HealthServiceProvider,() => hspAlias) 
      .SelectList(list => list 
            .Select(x => x.Id).WithAlias(() => hspTransactionDto.Id) 
            .Select(x => x.Version).WithAlias(() => hspTransactionDto.Version) 
            .Select(x => hspAlias.Id).WithAlias(() => hspTransactionDto.HSPId) 
            .Select(x => hspAlias.Name).WithAlias(() => hspTransactionDto.HSPName) 
            .Select(x => hmoAlias.Id).WithAlias(() => hspTransactionDto.HMOId) 
            .Select(x => hmoAlias.Name).WithAlias(() => hspTransactionDto.HMOName) 
            .Select(x => x.HSPPatientCode).WithAlias(() => hspTransactionDto.HSPPatientCode) 
            .Select(x => x.PatientFirstName).WithAlias(() => hspTransactionDto.PatientFirstName) 
            .Select(x => x.PatientMiddleName).WithAlias(() => hspTransactionDto.PatientMiddleName) 
            .Select(x => x.PatientLastName).WithAlias(() => hspTransactionDto.PatientLastName) 
      ) 
      .TransformUsing(Transformers.AliasToBean<HSPTransactionDto>()).List<HSPTransactionDto>(); 
    return hspTransactionDtoList; 

誰になってしまったので、いくつかのエイリアスを配置する必要があり見つかりましたか?

+0

は、私はいくつかを配置する必要がありanswwerは – reggieboyYEAH

+0

.JoinAlias(別名に参加しました(x => x.HealthServiceProvider、()=> hspAlias) – reggieboyYEAH

+0

回答を追加することであなた自身の質問に答えることができます。 –

答えて

1

私はあなたが選択的性質のために選択を使用しましたし、それはDTOとグループ化されていますので、あなたは、取得使用する必要はありませんだと思う:

 HSPTransactionDto hspTransactionDto   = null; 
     HealthMaintenanceOrganization hmoAlias  = null; 
     HealthServiceProvider hspAlias    = null; 
     var hspTransactionDtoList = 
      Session.QueryOver<Transaction>() 
       .Where(a => a.TransactionStatus == TransactionStatus.Draft) 
       .JoinAlias(x=> x.HealthMaintenanceOrganization,() => hmoAlias) 
       .JoinAlias(x => x.HealthServiceProvider,() => hspAlias) 
       .SelectList(list => list 
             .Select(x => x.Id).WithAlias(() => hspTransactionDto.Id) 
             .Select(x => x.Version).WithAlias(() => hspTransactionDto.Version) 
             .Select(x => hspAlias.Id).WithAlias(() => hspTransactionDto.HSPId) 
             .Select(x => hspAlias.Name).WithAlias(() => hspTransactionDto.HSPName) 
             .Select(x => hmoAlias.Id).WithAlias(() => hspTransactionDto.HMOId) 
             .Select(x => hmoAlias.Name).WithAlias(() => hspTransactionDto.HMOName) 
             .Select(x => x.HSPPatientCode).WithAlias(() => hspTransactionDto.HSPPatientCode) 
             .Select(x => x.PatientFirstName).WithAlias(() => hspTransactionDto.PatientFirstName) 
             .Select(x => x.PatientMiddleName).WithAlias(() => hspTransactionDto.PatientMiddleName) 
             .Select(x => x.PatientLastName).WithAlias(() => hspTransactionDto.PatientLastName) 
       ) 
       .TransformUsing(Transformers.AliasToBean<HSPTransactionDto>()).List<HSPTransactionDto>(); 
     return hspTransactionDtoList; 
関連する問題