0

次のコードは、コミットがトランザクションで呼び出されないにもかかわらず、データがデータベースにコミットされるという誤解を招く状況を示しています。

誰でも理由を説明できますか?

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

1 に答える 1

2

明示的に呼び出す session.flush()と、変更が保持されます。この投稿で詳しく説明しています

于 2009-10-19T01:08:08.813 に答える