I have a person entity containing an Address as a value object:
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);
});
}
It states in the NHibernate docs that if all the properties of a value object (Address1, Address2 etc) are null, the entire component will be mapped as null (i.e. Person.Address will be null). This is giving me problems in cases where all address fields are null because in my pages where I might have (I'm doing ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
This breaks with a null reference exception. So I'm looking for a clean way to set Address as a new Address() object rather than null if all the fields are empty when I load a Person from the database without doing it manually. I've discounted the following ideas:
Doing null checking in my view (yuk, horrible)
Making database fields not-nullable (I'm dealing with a legacy database)
Anyone any ideas?