sql >> データベース >  >> RDS >> Sqlserver

SqlConnection と MSDTC への昇格の回避

    RequiresNewすべき 他のトランザクションから分離されていることを意味します。通常、このメッセージは、トランザクション スコープ内で 2 つの接続がアクティブ化されたことを意味します - Are you sure そのブロック内で接続を作成/開く他のコードはありませんか?

    提案されたソリューションは機能するはずですが、いくつかの方法で TransactionScopeOption.Suppress 設定を変更するよりも便利かもしれません (ただし、どちらも機能するはずです)。ただし、問題があります。ADO.NET トランザクションを個々のコマンドに渡す必要があるため、以下が必要になります (コードも少し整理します)。

    using(var transaction = conn.BeginTransaction()) {
        try {
            var count = _changeTracker.CommitChanges(conn, transaction);
            transaction.Commit();
            return count;
        } catch {
            transaction.Rollback();
            throw;
        }
    }
    

    どこで CommitChanges トランザクションを受け入れます - おそらくオプションのパラメータを使用します:

    int CommitChanges(DbConnection connection, DbTransaction transaction = null)
    { ... }
    

    DapperFactory の命名 「dapper」を使用していることを示唆しています - その場合、それが null であるかどうかにかかわらず、「dapper」に渡すことができます。つまり、

    conn.Execute(sql, args, transaction: transaction);
    


    1. カンマ区切りの値を使用してmysql列を選択します

    2. mysqlを使用したjsonの解析

    3. Updateステートメントでテーブルエイリアスを使用する良い方法はありますか?

    4. bigintで生成されたキーを使い果たすとどうなりますか?それをどのように処理しますか?