В одной из транзакций мы извлекаем Сотрудника с empId = 100< /code> как показано ниже:
Код: Выделить всё
var employee = session.Get(100);
employee.IsActive = false;
Мы немедленно запускаем запрос, чтобы получить всех активных сотрудников.
Код: Выделить всё
var activeEmployees = session.CreateCriteria()
.Add(Restrictions.Eq("IsActive", true))
.List();
Я не могу понять, почему такое непоследовательное поведение. Если запрос выполняется в БД, он должен вернуть empId -100 со значением IsActive «True», иначе, если он выполняется в кеше первого уровня, он не должен включать empId-100 в результат запроса. Здесь он возвращает EmpId-100 с IsActive false.
Почему он так себя ведет? Я просмотрел некоторые статьи и детали конфигурации, но не могу понять, что это за поведение.
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-mismatch