3

2 つの列を持つデータベース テーブルがあり、T に 2 つのプロパティがあるリストがあります。

効果的に言うことができるようにトランザクションを作成するにはどうすればよいですか:

UPDATE MyTable 
SET ColumnA = List<T> 1st property 
WHERE ColumnB = List<T> 2nd Property

1 つの更新が実行される場合、トランザクションは必ずしも必要ではありませんが、リストに 100 個のアイテムがある場合、これを機能させるには何が必要ですか?

4

3 に答える 3

6

PetaPoco を使用している場合、これが正しい方法だと思います。

var db = new PetaPoco.Database("MyDB");

try
{
    db.BeginTransaction();
    foreach (var item in NewData)
    {
        db.Execute("UPDATE MyTable SET ColA= @0 WHERE ColB = @1",item.PropertyA, item.PropertyB);
    }
    db.CompleteTransaction();

}
catch (Exception ex)
{
    db.AbortTransaction();
}
于 2011-10-12T15:28:26.793 に答える
1

これらの更新ステートメントをループで実行し、リストをループする必要があります

using(var connection = new SqlConnection(connectionString)) {
    connection.Open();
    using(var transaction = connection.BeginTransaction("Transaction")) {
        foreach(var item in list) {
            using(var command = connection.CreateCommand()) {
                command.Transaction = transaction;
                command.CommandText = // set the command text using item
                command.ExecuteNonQuery();
            }
        }
        transaction.Commit();
    }
}
于 2011-10-12T14:03:11.967 に答える
0

それが複数の更新でない限り (つまり、更新ステートメントの複数の実行)、トランザクションは必要ありません。

おそらく、実際に実行されているコードの詳細を提供する必要があります...

于 2011-10-12T13:57:52.143 に答える