NHibernate事务:为什么这会导致提交的数据?

时间:2009-10-19 00:58:08

标签: nhibernate transactionscope

以下代码演示了数据的误导性情况 即使从未调用过提交,也会提交到数据库 事务。

有人可以解释原因吗?

[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);
                }
            }
        }
} 

1 个答案:

答案 0 :(得分:2)

明确调用session.flush()会持续进行更改。详细讨论了这个post