Ich habe eine Person Unternehmen eine Adresse als Wertobjekt enthält:Nullwert Objekte 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);
});
}
Darin heißt es in der NHibernate docs, dass, wenn alle Eigenschaften eines Wertobjekt (Address1, Address2 usw.) sind Null, die gesamte Komponente wird als Null zugeordnet (dh Person.Address ist null). Dies ist mir Probleme in den Fällen geben, in der alle Adressfelder, weil in meinen Seiten null sind, wo ich haben könnte (ich tue ASP MVC):
<%= Html.TextBoxFor((x => x.Address.Address1))%>
Dieser mit einer Null-Referenz Ausnahme bricht. Daher suche ich nach einer sauberen Methode, um Address als neues Address() -Objekt zu setzen, und nicht als null, wenn alle Felder leer sind, wenn ich eine Person aus der Datenbank lade, ohne sie manuell auszuführen. Ich habe folgende Ideen diskon:
Doing null Überprüfung meiner Meinung nach (igitt, schrecklich)
machen Datenbankfelder nicht-nullable (I mit einer Legacy-Datenbank zu tun haben)
jemand irgendwelche Ideen ?
Wird ziemlich hässlich, sobald Sie tatsächlich Adresse in der Benutzeroberfläche bearbeiten müssen, nicht nur zeigen, nicht wahr? – alex
Ja, hat einen besseren Vorschlag? –
Tolle Ideen, danke! Ändern des tatsächlich zugeordneten Adresseigenschaftszugriffsadressors, um das Abrufen und Festlegen wie gewohnt zu ermöglichen, aber mit dem Nullabgleich in der Get-Adresse neue Adresse(); funktioniert. Ich kann jetzt Adressen laden und bearbeiten, selbst wenn sie null sind, ohne meine Ansicht zu ändern, und der Ruhezustand wird nicht durcheinander gebracht. –