创建NHibernate对象并初始化Set

时间:2008-11-03 09:47:29

标签: nhibernate orm mapping

我有一个名为 Product 的表,我有表 StorageHistory

现在,Product在其映射中包含对StorageHistory的引用

<set name="StorageHistories" lazy="false">
  <key column="ProductId" />
  <one-to-many class="StorageHistory" />
</set>

它有效,当我从ORM中检索一个对象时,我得到一个空的ISet。

让我头疼的是如何构建对象。 当我执行以下操作时:

var product = new Product();
session.Save(product);

product.StorageHistories属性为NULL,我得到一个NullReferenceException。 那么,如何向该集合中添加项目,或者我应该将自己的StorageHistory项目添加到数据库中呢?

2 个答案:

答案 0 :(得分:6)

我总是在父对象的ctor中执行以下操作:

histories = new HashedSet();

这包括Save()用例。正如你所说,NHibernate涵盖了Load()/ Get()等用例。

答案 1 :(得分:0)

为什么不呢?

private ISet _StorageHistories;
public virtual ISet StorageHistories {
     protected set { _StorageHistories = value;}
     get { if (_StorageHistories == null) _StorageHistories = new HashSet();
           return _StorageHistories;
     }
}

当然,如果你经历过私有的麻烦,你也可以把它放在构造函数中。