Nhibernate: Warum stimmen Sitzungscache und Abfrageergebnisse nicht überein?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Nhibernate: Warum stimmen Sitzungscache und Abfrageergebnisse nicht überein?

Post by Anonymous »

Wir verwenden Nhibernate v4.0.30319 und wir verwenden Flushmode.Commit. Betrachten wir eine Beispiel-Employee-Tabelle mit der IsActive-Spalte in der Datenbank.
In einer der Transaktionen rufen wir den Employee mit empId = 100< ab /code> wie folgt:

Code: Select all

var employee = session.Get(100);

employee.IsActive = false;
Es ist noch nicht festgeschrieben und noch nicht einmal geleert.
Wir führen sofort die Abfrage aus, um alle aktiven Mitarbeiter abzurufen.

Code: Select all

var activeEmployees = session.CreateCriteria()
.Add(Restrictions.Eq("IsActive", true))
.List();
Jetzt erhalte ich im activeEmployees-Ergebnis immer noch die Mitarbeiterdetails von empId=100, aber mit dem IsActive-Wert als falsch.
Ich kann nicht verstehen, warum dieses inkonsistente Verhalten auftritt. Wenn die Abfrage in der Datenbank ausgeführt wird, sollte sie empId -100 mit dem IsActive-Wert „True“ zurückgeben. Wenn sie jedoch im Cache der ersten Ebene ausgeführt wird, sollte empId-100 nicht im Abfrageergebnis enthalten sein. Hier wird EmpId-100 mit IsActive false zurückgegeben.
Warum verhält es sich so? Ich habe einige Artikel und Konfigurationsdetails durchgesehen, kann dieses Verhalten jedoch nicht herausfinden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post