NHibernate返回与null元素相关联的集合

时间:2011-07-11 01:08:21

标签: c# nhibernate asp.net-mvc-3

我对NHibernate有一个问题(C#,MVC3)。我有两个相关的一对多表:源和过滤器(一个源到多个过滤器)。

来源的映射:

<?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);

我得到两个项目的列表source.Filters = {null,Filter}。我不明白列表如何包含null。 在Filters表中的数据库中,只存在与列表中的null对象一起返回的一行。

1 个答案:

答案 0 :(得分:2)

在表过滤器中,一行具有FilterIndex = 1。

The documentation注意到索引的索引列从零开始编号。