0
Следующий код демонстрирует ошибочную ситуацию, в которой данные привязаны к базе данных, хотя фиксация никогда не вызывается в транзакции .Операция NHibernate: Почему это приводит к фиксации данных?
Может ли кто-нибудь объяснить, почему?
[TestFixture]
public class TestFixture
{
[Test]
public void Test()
{
var config = DoConfiguration();
using(var factory = config.BuildSessionFactory())
{
using (var session = factory.OpenSession())
{
CallSessionContext.Bind(session);
using(new TransactionScope())
{
using (session.BeginTransaction())
{
var myEntity = session
.CreateQuery("from myEntity")
.List<MyEntity>()[0];
myEntity.Name = "test name";
}
var myEntity2 = session
.CreateQuery("from myEntity")
.List<MyEntity>()[0];
myEntity2.Name = "test name";
session.Flush();
}
CallSessionContext.Unbind(factory);
}
}
}
}
Привет, спасибо. Поэтому я задаюсь вопросом: есть ли способ запустить две транзакции NHibernate в пределах одного TransactionScope, не убивая TransactionScope между ними? – cbp
Я недостаточно осведомлен, чтобы сказать с уверенностью, но я подозреваю, что вы должны обернуть использование сеанса с помощью области транзакции, а не создавать транзакции nHibernate в сеансе, объявленном за пределами области транзакции. – cmsjr
также, возможно, проверьте это проверьте это http://ayende.com/Blog/archive/2006/06/04/NHibernateAndSystemTransactionsASuccess.aspx – cmsjr