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);
}
}
}
}
嗨,谢谢,所以我想问题是 - 是否有任何方式在相同的TransactionScope中运行两个NHibernate事务,而不杀死之间的TransactionScope? – cbp 2009-10-19 01:34:49
我不够自信地说,但我会怀疑你应该用事务范围包装你的会话使用情况,而不是在事务范围之外声明的会话上创建nHibernate事务。 – cmsjr 2009-10-19 02:13:41
也,也许检查了这一点 检查了这一点 http://ayende.com/Blog/archive/2006/06/04/NHibernateAndSystemTransactionsASuccess.aspx – cmsjr 2009-10-19 02:14:31