我对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对象一起返回的一行。