3

我有一个有 2 列的数据库表,我有一个 T 有 2 个属性的列表。

如何创建交易以便我可以有效地说:

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

如果要执行一次更新,则可能不一定需要交易,但如果我的列表中有 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 回答