У меня есть человек объект, содержащий адрес в качестве объекта значения:объекты Нулевое значение в NHibernate
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 из базы данных, не делая этого вручную. Я дисконтированный следующие идеи:
Doing нулевой проверки на моем взгляде (тьфу, ужасную)
Создание полой базы данных не-обнуляемых (я имею дело с унаследованной базой данных)
Anyone любых идеями ?
Становится довольно уродливым, как только вам действительно нужно изменить адрес в пользовательском интерфейсе, а не просто показать его, да? – alex
Да, получилось лучшее предложение? –
Отличные идеи, спасибо! Изменение фактического сопоставленного свойства доступа к свойствам Адреса, чтобы разрешить get и установить как обычно, но используя нулевую проверку в get «Address? New Address();» работает. Теперь я могу загружать и редактировать адреса, даже если они являются нулевыми, без изменения моего представления, а спящий режим не путается. –