Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate Linq不匹配ReenodeException、Simple OrderBy和GroupBy_C#_Linq_Nhibernate - Fatal编程技术网

C# NHibernate Linq不匹配ReenodeException、Simple OrderBy和GroupBy

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

我使用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.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之后添加它会有点挫败在数据库中进行排序,因为它会在内存中进行。