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;
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();
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.