我有一个包含地址作为值对象的人员实体:
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)。在所有地址字段为空的情况下,这会给我带来问题,因为在我可能拥有的页面中(我正在做 ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
这会因空引用异常而中断。因此,我正在寻找一种干净的方法来将 Address 设置为新的 Address() 对象,而不是 null 如果当我从数据库中加载 Person 时所有字段都为空而不手动执行。我打折了以下想法:
在我的视图中进行空值检查(yuk,可怕)
使数据库字段不可为空(我正在处理旧数据库)
有人有什么想法吗?