我有一个人实体,其中包含一个地址作为值对象:
public Person()
{
WithTable("Person");
Id(x => x.Id);
Component<Address>(x => x.Address, a =>
{
a.Map(x => x.Address1);
a.Map(x => x.Address2);
a.Map(x => x.Address3);
a.Map(x => x.Town);
a.Map(x => x.Postcode);
});
}
在 NHibernate 文档中提到,如果值对象(如 Address1、Address2 等)的所有属性都为 null,则整个组件将映射为 null(即 Person.Address 将为 null)。在所有地址字段都为 null 的情况下,这会给我带来问题,因为我可能有这样的页面(我正在使用 ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
如果我从数据库加载Person时,所有字段都为空,那么这会导致空引用异常。因此,我正在寻找一种干净的方法,可以将Address设置为新的Address()对象,而不是null。我已经排除了以下想法:
在我的视图中进行null检查(呸,可怕)
使数据库字段不可为空(我正在处理一个旧数据库)
有人有什么想法吗?