NHibernate Linq Group By не может правильно сгруппировать в SQL Server - PullRequest
11 голосов
/ 29 января 2012

У меня есть следующий запрос 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();

Однако он жалуется, что SQL Server не удается сгруппировать по столбцу CaseOwner.Name, поскольку онне содержится в списке выбора или предложении группы.Исходя из мира баз данных, я понимаю эту ошибку, однако я не уверен, как заставить NHibernate группировать по Id и Name, но все еще имеет сущность CaseOwner, доступную мне в моем Select.

1 Ответ

7 голосов
/ 29 января 2012

Я наконец нашел ответ ...

     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;

Это работает нормально, оказывается, мне нужно спроецировать новую сущность со свойствами, по которым я хочу сгруппироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...