即使所有属性都为null,我如何告诉NHibernate加载一个非null的组件?

时间:2010-05-21 06:30:51

标签: nhibernate nhibernate-mapping

我有一个封装DateTime的Date类? class(帮助模拟DateTime.Now,我们的域等)。

Date类只有一个受保护的属性:DateTime?日期

public class Date
{
    protected DateTime? date;
}

// mapping in hbm
<component name="CompletedOn">
  <property column="StartedOn" name="date" access="field" not-null="false" />
</component>

来自nhibernate docs:

Like all value types, components do not support shared references. The null value semantics of a component are ad hoc. When reloading the containing object, NHibernate will assume that if all component columns are null, then the entire component is null. This should be okay for most purposes.

我可以覆盖此行为吗?我想要实例化我的Date类,即使date为null。

谢谢,

2 个答案:

答案 0 :(得分:5)

我认为您可以通过使用实现IPostLoadEventListener的侦听器来实现此行为。加载实体后,您可以检查该组件是否为空,如果是,则检查该组件。

答案 1 :(得分:4)

我认为你不能覆盖这种行为。

然而,通常更容易让NH像往常一样工作(检索null)并将其包装在您的域模型中。

但是从我看到的情况来看,看起来你这样做可能是为了表达(数据绑定?)的问题。是否更容易公开DateTime?