У меня возникли некоторые странности с кешем второго уровня.
Я удаляю объект следующим универсальным методом:
[Transaction(TransactionMode.Requires)]
public virtual void DeleteObject(object obj)
{
ISession session = _sessionManager.OpenSession();
session.Delete(obj);
}
Я регистрирую действия кеша и вижуобъект признан недействительным и удален:
Недействительно: ncontinuity2.core.domain.AuditEvent.ReviewList # 67d175fe-1220-4dff-9c6b-9fe200a1fc89
Выпуск: ncontinuity2.core.domain.AuditEvent # 67d175fe-1220-4dff-9c6b-9fe200a1fc89
Затем я пытаюсь получить коллекцию типа, содержащего удаленную сущность, используя этот общий код:
public virtual IList<T> GetAllByExpression<T>(Expression<Func<T, bool>> expression) where T : class
{
var session = _sessionManager.OpenSession();
var result = session.QueryOver<T>()
.Where(expression)
.List();
return result;
}
Ранее удаленный объект находится в наборе результатов.Если я проверяю журнал кэша, у меня появляется следующая запись:
Поиск в кэше: ncontinuity2.core.domain.AuditEvent # 67d175fe-1220-4dff-9c6b-9fe200a1fc89
Кэшированный элементбыл заблокирован: ncontinuity2.core.domain.AuditEvent # 67d175fe-1220-4dff-9c6b-9fe200a1fc89
Кто-нибудь знает, почему я могу получить запись "Кэшированный элемент заблокирован"? *
Я использую Nhibernate 3.0.0.3001.