C# 一对多上的nHibernate空列表值

C# 一对多上的nHibernate空列表值,c#,nhibernate,one-to-many,C#,Nhibernate,One To Many,我有一个包含许多OrderItems的订单映射。当我只保存订单时,映射会将订单和OrderItems正确地保存到数据库中,但当我重新加载该订单时,订单包含的OrderItems列表将填充空值(对于表中的所有其他订单项),直到它到达具有订单外键的OrderItem。因此,空订单项目的总计数是OrderItems表的行计数(不包括与订单相关的实际订单项目)。以下是我的映射: 订单: <list name="OrderItems" table="OrderItems" cascade="all"

我有一个包含许多OrderItems的订单映射。当我只保存订单时,映射会将订单和OrderItems正确地保存到数据库中,但当我重新加载该订单时,订单包含的OrderItems列表将填充空值(对于表中的所有其他订单项),直到它到达具有订单外键的OrderItem。因此,空订单项目的总计数是OrderItems表的行计数(不包括与订单相关的实际订单项目)。以下是我的映射:

订单:

<list name="OrderItems" table="OrderItems" cascade="all" inverse="true" >
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" not-found="ignore" />
</list>

订单项:

<many-to-one name="Order" class="Order" column="OrderID" not-null="true" />

以下是Order的类实现:

public class Order : {
    private IList<OrderItem> orderItems = new List<OrderItem>();
公共课堂秩序:{
私有IList orderItems=新列表();

我读到nHibernate不支持将列表作为关系的许多部分,但保存功能正常,只是加载功能不正常。我是否必须将所有内容转换为集合才能正常工作?

我记得我的大脑顶部有问题

<list> 

诉诸

<bag> 

而是映射到.NET IList接口。不确定这是否能解决您的问题


可能有帮助的是,通过启用日志记录到console(),查看访问数据库的实际SQL与您预期的不同。这不是因为您的OrderItems集合是延迟加载的吗? 如果在列表(或包)映射中指定lazy=false,那么情况就不再是这样了

当然,问题是,是否要延迟加载OrderItems