Ich möchte einige der vordefinierten Lookups ohne Rundschreiben für Datenbank in NHibernate verwenden.Statische Lookups in NHibernate
Grundsätzlich würde Ich mag Code wie diese haben:
public class Countries
{
static Countries() {
Australia = new Country
{
Id = 14,
Description = "Australia"
}
}
public static Country Austrlia { get; protected set }
}
Dann ist diese Code-Schnipsel schreiben:
address.Country = Countries.Australia;// Snippet1
if (address.Country == Countries.Australia) { // Snippet2
// Do something
}
So kann ich überschreiben Equals, GetHashCode und sogar Betreiber überlasten == und = für die Länderklassensuche.
Das Snippet1 funktioniert nur, wenn das Land mit der angegebenen ID nicht in den Speicher geladen wurde. Andernfalls wird NonUniqueObjectException ausgelöst, da das Objekt mit der angegebenen ID bereits im Speicher vorhanden ist.
Um dies zu bearbeiten, muss ich das geladene Land entfernen und dann den Lookup-Wert zuweisen. Das fühlt sich falsch an und ich bin mir nicht sicher, was passieren wird, wenn die Abfrage für die Ländersuche erneut ausgeführt wird.
Die Frage ist also: Wie statische Lookup-Klassen in NHibernate beibehalten?
Danke, Dmitriy.
Danke. Gute Eins. Aber nicht genau das, was ich brauche. Ich werde versuchen, genauer zu sein: 1) address.Country = Countries.Australia WHEN address.Country wurde bereits zugewiesen und beibehalten. Es verursacht NonUniqueObjectException. UND 2) address.Country = Session.Get (UserSelectedIdFromScreen) WANN: Liste der Länder wird aus der Datenbank und nicht aus dem Code aufgefüllt. Im Code sind nur einige vordefinierte Werte bekannt. Andere kommen aus der DB. –