1

プロジェクトで Linq-to-Entity (EF 4.0) を使用しています。マイコードでトランザクションを利用したい。コードでトランザクションを使用する 2 つの方法を見つけました。System.Transaction と System.Data.Common.DbTransaction の違いは何ですか? どちらがパフォーマンスが優れていますか?

最初:

            using (testEntities ent = new testEntities())
        {
            ent.Connection.Open();
            using (System.Data.Common.DbTransaction transaction = ent.Connection.BeginTransaction())
            {
                try
                {
                    ...

                    int er1 = ent.SaveChanges();
                    if (er1 > 0)
                        success = true;
                    else
                        success = false;

                    ...

                    int er2 = ent.SaveChanges();
                    if (er2 > 0)
                        success = true;
                    else
                        success = false;
                }
                catch
                {
                    success = false;
                }

                success = false;

                if (success)
                    transaction.Commit();
                else
                    transaction.Rollback();
            }
        }

2番目:

            using (testEntities ent = new testEntities())
        {
            ent.Connection.Open();
            using (TransactionScope tscope= new TransactionScope())
            {

                ...

                int er1 = ent.SaveChanges();

                ...

                int er2 = ent.SaveChanges();


                tscope.Complete();

            }
        }
4

1 に答える 1

4

msdn から

System.Transactions 名前空間には、独自のトランザクション アプリケーションとリソース マネージャーを作成できるクラスが含まれています。具体的には、1 人または複数の参加者とのトランザクション (ローカルまたは分散) を作成して参加できます。

DbTransactions は、データベース トランザクション専用です。TransactionScope は、自動トランザクション登録機能を提供します。新しいトランザクションを登録または作成します。これには、データベースまたは分散トランザクションが含まれる場合があります。

詳細については、 msdnを確認してください。

于 2012-09-10T16:14:26.077 に答える