1

INSERT/UPDATE ステートメントはすべて、EF4 の SaveChanges を使用して READ UNCOMITTED 分離レベルで実行されていることがわかりました。

UnitOfWork クラスでは、これは変更 (挿入/更新) をコミットするコードです。

public int Commit()
{
    return ObjectContextManager.GetObjectContext().SaveChanges();
}

Entity Framework 4 を使用してコミットされたすべての INSERTS および UPDATES は、SNAPSHOT 分離レベルでコミットされることを望みます。

SaveChanges() を Scope で囲んでみましたが、うまくいかないようです (SQL 側ではまったく挿入されません)。

        public int Commit()
        {
            int ret;

            var scope = new System.Transactions.TransactionScope(
                // a new transaction will always be created
                TransactionScopeOption.RequiresNew,
                // we will allow volatile data to be read during transaction
                new TransactionOptions()
                {
                    IsolationLevel = System.Transactions.IsolationLevel.Snapshot
                }
            );

            using (scope)
            {
                ret = ObjectContextManager.GetObjectContext().SaveChanges();

                scope.Complete();
            }

            return ret;
        }

私たちは何を間違っていますか?

4

0 に答える 0