NHibernate Linq Group由于无法在SQL Server中正确分组

Ric*_*ews 11 linq nhibernate sql-server-2008

我有以下LINQ查询,它使用NHibernate对SQL Server支持的存储库...

var casesByCaseOwner = this.preGrantDetailRepository.All
   .Where(x => x.CaseFileLocation.Id == cflId)
   .GroupBy(x => x.CaseOwner)
   .Select(x => new StagSummaryForCfItem
   {
      Id = x.Key.Id,
      Description = x.Key.Name,
      NumberOfCases = x.Count(),
      UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee),
      UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement)
   }).AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

但是,它抱怨SQL Server无法按CaseOwner.Name列分组,因为它不包含在选择列表或组子句中.来自数据库世界我理解错误,但是,我不知道如何强制NHibernate按两者分组Id,Name但仍然CaseOwner可以在我的Select中使用该实体.

Ric*_*ews 7

我终于找到了答案......

     var casesByCaseOwner = this.preGrantDetailRepository.All
     .Where(x => x.CaseFileLocation.Id == cflId)
     .GroupBy(x => new { x.CaseOwner.Id, x.CaseOwner.Name })
     .Select(x => new StagSummaryForCfItem
     {
        Id = x.Key.Id,
        Description = x.Key.Name,
        NumberOfCases = x.Count(),
        UninvoicedNetFee = x.Sum(y => y.UninvoicedNetFee),
        UninvoicedDisbursement = x.Sum(y => y.UninvoicedDisbursement)
     }).AsEnumerable();

     return casesByCaseOwner;
Run Code Online (Sandbox Code Playgroud)

这很有效,事实证明我需要使用我想要分组的属性来投影一个新实体.