C# NHibernate Linq不匹配ReenodeException、Simple OrderBy和GroupBy
我使用NHibernate 3.2.0.4000通过下面的简单查询得到了一个不匹配的ReineodeException抛出。我假设这是一个bug,如果是这样的话,有人知道一个变通方法吗C# NHibernate Linq不匹配ReenodeException、Simple OrderBy和GroupBy,c#,linq,nhibernate,C#,Linq,Nhibernate,我使用NHibernate 3.2.0.4000通过下面的简单查询得到了一个不匹配的ReineodeException抛出。我假设这是一个bug,如果是这样的话,有人知道一个变通方法吗 var result = session.Query<File>() .OrderBy(x => x.Author) .GroupBy(file => file.Author) .Select(author => new FileAuthor(author.K
var result = session.Query<File>()
.OrderBy(x => x.Author)
.GroupBy(file => file.Author)
.Select(author => new FileAuthor(author.Key, author.Count()))
.ToList();
var result=session.Query()
.OrderBy(x=>x.Author)
.GroupBy(file=>file.Author)
.Select(author=>newfileauthor(author.Key,author.Count()))
.ToList();
我已经使用了您的示例,使用此表单进行查询效果良好:
var result = session.Query<File>()
.GroupBy(file => file.Author)
.Select(author => new
{
Key = author.Key.AuthorId,
Count = author.Count()
})
.ToList();
var result=session.Query()
.GroupBy(file=>file.Author)
.选择(作者=>新建)
{
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>
我已经使用了您的示例,使用此表单进行查询效果良好:
var result = session.Query<File>()
.GroupBy(file => file.Author)
.Select(author => new
{
Key = author.Key.AuthorId,
Count = author.Count()
})
.ToList();
var result=session.Query()
.GroupBy(file=>file.Author)
.选择(作者=>新建)
{
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>
您可以尝试移动OrderBy方法,并在ToList之后调用它。我认为这是例外的直接原因。(Linq提供程序或多或少是一个C#=>SQL转换器,GroupBy之前的OrderBy在SELECT语句中无效)。GroupBy之后,它也会失败,无法解析属性键。另外,在ToList之后添加OrderBy有点挫败了在数据库中进行排序,因为它将在内存中进行。您可以尝试移动OrderBy方法并在ToList之后调用它。我认为这是例外的直接原因。(Linq提供程序或多或少是一个C#=>SQL转换器,GroupBy之前的OrderBy在SELECT语句中无效)。GroupBy之后,它也会失败,无法解析属性键。在ToList之后添加它会有点挫败在数据库中进行排序,因为它会在内存中进行。