ho un'entità persona che contiene un indirizzo come un oggetto di valore:Null oggetti di valore in 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);
});
}
Essa afferma nella documentazione NHibernate che se tutte le proprietà di un oggetto di valore (Indirizzo1 Indirizzo2 ecc) sono null, l'intero componente verrà mappato come null (cioè Person.Address sarà null). Si tratta di avermi dato problemi nel caso in cui tutti i campi di indirizzo sono nulle perché nei miei pagine dove potrei avere (che sto facendo ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
Questo rompe con un'eccezione di riferimento null. Quindi sto cercando un modo pulito per impostare Address come nuovo oggetto Address() anziché null se tutti i campi sono vuoti quando carico una persona dal database senza farlo manualmente. Ho scontato le seguenti idee:
Fare controllo nullo, a mio avviso (bleah, orribile)
Fare campi di database non-nullable (ho a che fare con un database legacy)
Chiunque tutte le idee ?
Diventa piuttosto brutto non appena è effettivamente necessario modificare l'indirizzo nell'interfaccia utente, non solo mostrarlo, eh? – alex
Sì, hai un suggerimento migliore? –
Grandi idee, grazie! Modificando l'effettivo accessor della proprietà Address mappato per consentire di ottenere e impostare come al solito, ma usando il check null nel get "Indirizzo ?? nuovo indirizzo();" lavori. Ora posso caricare e modificare gli indirizzi anche se sono nulli, senza modificare la mia vista e l'ibernazione non viene confusa. –