У меня странное поведение NHibernate и ADO.NET. Я использую NHibernate как стандартную ORM, но некоторые операции быстрее с ADO.NET (например, пакетная или вызов хранимой процедуры).Nhibernate последующее чтение после вызова хранимой процедуры
Так я делаю следующее
var item = _items.GetById(100);
Затем я вызова хранимой процедуры, которые обновить ту же сущность со следующими инструкциями
var session = _sessionManager.OpenSession();
using (var tx = session.BeginTransaction())
{
var item = _items.GetAll().FirstOrDefault(x => x.ItemCode == code);
var cmd = session.Connection.CreateCommand();
session.Transaction.Enlist(cmd);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter id = SQLUtil.GetParam("@bigId", SqlDbType.BigInt, inout: false);
cmd.CommandText = "storedUpdateItem";
cmd.Parameters.Add(SQLUtil.GetParam("@tstTS", SqlDbType.Timestamp, inout: false));
cmd.Parameters.Add(id);
int ret = cmd.ExecuteNonQuery();
if (ret != 1)
{
throw new ApplicationException("Something gone wrong with update");
}
tx.Commit();
return _items.GetById(id.Value);
}
Так последняя операция, чтобы получить еще раз, используя Хранилище NHibernate разбивает элемент. Проблема в том, что элемент не обновляется с базой данных. Кажется, это предыдущая версия. Есть идеи?