2009-07-10 6 views
0

Ich lade viele Daten mit NHibernate in die Datenbank. Während ich einfüge, möchte ich nach Duplikaten suchen.Können NHibernate-Kriterien aus dem Cache abrufen

Ich rufe saveorupdate in jeder Schleife auf, ohne die Sitzung zu leeren.

Gibt es eine Möglichkeit, diese Sitzung für Dubletten abzufragen, ohne zu spülen?

Antwort

0

Sie benutzerdefinierte Interceptor schreiben können, die mit folgenden Signatur public override bool OnLoad (Objekt Einheit, Objekt-ID, Object [] Zustand, string [] property, IType [] Typen)

dann Sie onsave Methode gibt Sie können doppelte Prüflogik innerhalb dieser Methode haben. (Z. B. indem das Wörterbuch aller für diesen Typ bereits vorhandenen IDs beibehalten wird)

Alternativ können Sie Ihren doppelten Prüfcode direkt in die benutzerdefinierte Implementierung von ISaveEventListner einbinden. Sie müssen Ihren benutzerdefinierten Ereignislistener zum Zeitpunkt der Konfiguration von nhibernate registrieren. Hier ist Schnipsel für Ref

Configuration cfg = new Configuration(); 
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() }; 
cfg.EventListeners.SaveEventListeners = stack; 
+0

Da ich dieses Problem vorbei gegangen bin, habe ich keine Möglichkeit zu überprüfen, ob dies korrekt ist. Wenn jemand es überprüfen kann, werde ich die Antwort akzeptieren. –