NHibernate Linq MismatchedTreeNodeException, Простой порядокBy и GroupBy - PullRequest
0 голосов
/ 05 ноября 2011

Я получаю исключение MismatchedTreeNodeException с простым запросом ниже, используя NHibernate 3.2.0.4000.Я предполагаю, что это ошибка, и если так, кто-нибудь знает об обходной путь?

var result = session.Query<File>()
    .OrderBy(x => x.Author)
    .GroupBy(file => file.Author)
    .Select(author => new FileAuthor(author.Key, author.Count()))
    .ToList();

1 Ответ

0 голосов
/ 05 ноября 2011

Я поиграл с вашим примером, и запрос в этой форме отлично работает:

var result = session.Query<File>()
                    .GroupBy(file => file.Author)
                    .Select(author => new
                    {
                       Key = author.Key.AuthorId,
                       Count = author.Count()
                    })
                    .ToList();

По-видимому, когда вы группируете по сущности, возможно только проецировать ее ID и агрегаты. Похоже, что сортировка должна выполняться на клиенте.

Использованные отображения:

 <class name="Author" table="authors">
        <id name="AuthorId" column="author_id" />

    <property name="AuthorName" column="author_name" />

    <bag name="Files">
      <key>
        <column name="author_id" />
      </key>
      <one-to-many class="File"/>
    </bag>

  </class>

  <class name="File" table="files">
        <id name="FileId" column="file_id" />

    <property name="FileName" column="file_name" />

    <many-to-one name="Author" class="Author">
      <column name="author_id"  />
    </many-to-one>

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