Die Session von NHibernate implementieren nicht nur die ‚Arbeitseinheit‘ Muster, aber es führt auch das Muster ‚Identity Map‘.
Wenn Sie also zum ersten Mal in einer Sitzung eine Entität aus dem Datenspeicher abrufen, ruft NHibernate diese Entität aus der DB ab.
Wenn Sie dieselbe Entität erneut mit der gleichen Sitzung abrufen möchten, wird NHibernate sie nicht aus der Datenbank abrufen, aber es wird die Referenz zurückgegeben, die sie bereits abgerufen hat. Dies ist natürlich nur dann der Fall, wenn Sie die gleiche Session-Instanz verwenden, wenn Sie dieselbe Entity zum zweiten Mal abrufen.
Wenn Sie Änderungen an einer Entität vornehmen und in der Zwischenzeit eine andere Person die gleiche Entität ändert und diese Änderungen in der Datenbank fortsetzt, werden Sie diese Änderungen natürlich nicht sehen, da Sie nicht erwarten können, dass NHIbernate dies überwacht die gesamte Datenbank und überprüft, ob jemand anderes eine Entität im Speicher geändert hat (und beibehalten hat).
Daher wird empfohlen, dass Ihre Sitzungen kurzlebig sein sollten. Um Änderungen nicht zu überschreiben, können Sie einfach die optimistische Sperre in NHibernate implementieren.
Aber, ich frage mich ... Sind Sie sicher, dass NHibernate eine gute Lösung für Ihr Problem ist? Welche Art von Anwendung werden Sie erstellen?
Ich verstehe Ihre Situation nicht. Was meinst du mit "großen Datensätzen"? Wie ist es strukturiert? Sind das so viele Reihen, oder ist es ein einzelner Fleck? Ist das Datenbankmodell bereits definiert? Ist das Objektmodell bereits definiert? Was ist das eigentliche Problem, das Sie lösen müssen? –