0

私はそのようなマスターエンティティTrnxを持っています:

 public class MasterTrnx
 {
    private int? _AccountId;
    private string _Place;
    private DateTime _ProcessTime;
    private int _TrnxId;
    private decimal? _PaymentValue;
  }

そして、そのようなマスターの子エンティティ:

  public class MasterTrnxDetail
  {
    private MasterTrnx _MasterTrnx;
    private decimal _MasterPaymentValue;
    private decimal _PaymentValue;
    private int _Xid;
  }

1つのMasterTrnxエンティティには、MasterTrnxDetailの子より1つ多くあります。

 using (ISession session = base.GetSession())
        {
            try
            {
                tx = session.BeginTransaction();

                listOfMasterTrnxDetail = session.QueryOver<MasterTrnxDetail>()
                    .JoinQueryOver(d => (IEnumerable<MasterTrnx>)d.Trnx)
                    .List();

                tx.Commit();
            }
            catch (Exception e)
            {
                if (tx != null)
                {
                    tx.Rollback();
                }
                throw e;
            }
            finally
            {
                session.Close();
            }

            return listOfMasterTrnxDetail;
        }

このコードブロックは機能しています。たとえば、マスターエンティティがあり、3つのmasterdetailがあります。このコードは私に3つのレコードを与えます。しかし、1つのマスターレコードと詳細の合計'MasterPaymentValuesが必要です。どうやってやるの?また、メソッドが次のような別のエンティティを返すようにします。

public class Trnx
{
    public decimal? PaymentValue { get; set; }
    public DateTime ProcessTime { get; set; }
    public string TrnxName { get; set; }
    public decimal? TotalMasterPaymentValue { get; set; }
}

手伝ってくれてありがとう。

4

1 に答える 1

0

あなたのクラスモデルは少し奇妙に見えるので、推測することしかできません

MasterTrnx mastertx = null;

var subquery = QueryOver.Of<MasterTrnxDetail>()
    .Where(detail => detail.MasterTrnx = mastertx)
    .Select(Projections.Sum<MasterTrnxDetail>(d => d.PaymentValue));


Trnx dto = null;

transactions = session.QueryOver(() => mastertx)
    .SelectList(list => list
        .Select(t => t.ProcessTime).WithAlias(() => dto.ProcessTime)
        .Select(t => t.Place).WithAlias(() => dto.TrnxName)
        .Select(Projections.Subquery(subquery)).WithAlias(() => dto.TotalMasterPaymentValue)
    )
    .TransformUsing(Transformers.AliasToBean<Trnx>())
    .List<Trnx>();
于 2012-04-26T10:38:26.257 に答える