NHibernate返回null元素的集合

本文关键字:集合 元素 null 返回 NHibernate | 更新日期: 2023-09-27 18:01:47

我有一个问题与NHibernate (c#, MVC3)。我有两个相关的一对多表:Sources和Filters(一个Source to多个Filters)。

源映射:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core" namespace="Core.Model">
  <class name="Source" table="Sources">
    <id name="Id">
      <generator class="identity" />
    </id>
    ... properties ...
    <list name="Filters" cascade="all-delete-orphan" inverse="false">
      <key column="SourceId" />
      <index column="FilterIndex" />
      <one-to-many class="Filter" />
    </list>
  </class>
</hibernate-mapping>

过滤器的映射:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core" namespace="Core.Model">
  <class name="Filter" table="Filters" abstract="true">
    <id name="Id">
      <generator class="identity" />
    </id>
    ... properties ...
    <many-to-one name="Source" column="SourceId" />
  </class>
</hibernate-mapping>

所有工作

问题是,当我从数据库获得源记录:

Source source = session.Get<Source>(id);

我得到两个项目源的列表。过滤器= {null,过滤器}。我不明白列表怎么能包含null。

NHibernate返回null元素的集合

在数据库的Filters表中,只有一行与null对象一起返回。

在表Filters中,只有一行的FilterIndex=1

文档指出,索引的索引列从0开始编号。