2011-01-04 1 views
4

Я пытаюсь выполнить группу по запросу Linq с NH3. Зная трудности SQL, связанные с подписчиками, я знаю, что это невозможно, но в идеале я хотел бы сделать группу сущностью и получить ее в полном объеме. Что-то вроде:Не удается получить группу по объектам или с помощью составных ключей с Linq Nhibernate

var list = from proposals in Session.Query<Proposal>() 
      group proposals by proposals.Job 
      into jobGrouping 
      select new { 
       Job = jobGrouping.Key, 
       TotalProposals = jobGrouping.Count() 
      }; 

Это создает недопустимый запрос SQL, как он пытается восстановить весь объект работы, но группа только его Id.

Я попытался группировками композитного поля:

var list = from proposals in Session.Query<Proposal>() 
        group proposals by new { proposals.Job.Name, proposals.Job.Status} 
        into jobGrouping 
        select new { 
         Job = jobGrouping.Key.Name, 
         Status = jobGrouping.Key.Status, 
         TotalProposals = jobGrouping.Count() 
        }; 

Но всякий раз, когда я пытаюсь это я получаю исключение, когда NHibernate tryes построить дерево выражения:

элемент с тем же ключом уже добавлен.

Кто-нибудь знает, есть ли способ сделать это с помощью NHibernate?

Спасибо, Илан

+0

+1 У меня такая же проблема –

+1

https://nhibernate.jira.com/browse/NH-3027 имеет отношение к вашей (первой) проблеме - она ​​остается неразрешенной с NH 3.2 –

ответ

0

У меня была аналогичная проблема, пытаясь использовать метод расширения .join несколько раз, когда выражение дерева псевдоним был взят непосредственно из имени параметра лямбда.

Мои знания о синтаксисе SQL Как linq ограничены, но я бы предположил, что он каким-то образом переводится в свободный эквивалент, где автоматически назначаются имена псевдонимов лямбда.

Если то в случае его возможно, что перевод этого к беглому синтаксису с явными уникальным labmda псевдонимами вы могли бы избежать проблем

 Смежные вопросы

  • Нет связанных вопросов^_^