В NHibernate 3.0 FlushMode.Auto
не работает при работе только с внешней транзакцией (то есть без запуска транзакции NHibernate). Должен ли он?
using (TransactionScope scope = new TransactionScope())
{
ISession session = sessionFactory.OpenSession();
MappedEntity entity = new MappedEntity() { Name = "Entity", Value = 20 };
session.Save(entity);
entity.Value = 30;
session.SaveOrUpdate(entity);
// This returns one entity, when it should return none
var list = session.
CreateQuery("from MappedEntity where Value = 20").
List();
}
(Пример, бессовестно украденный из , этот связанный вопрос )
Я вижу, что в исходном коде NHibernate проверяется, выполняется ли транзакция (в SessionImpl.AutoFlushIfRequired
), но соответствующий метод ( SessionImpl.TransactionInProgress
) не учитывает внешние транзакции - в отличие от своего кузена ConnectionManager.IsInActiveTransaction
, который учитывает внешние транзакции. 11139372]