从List <t> </t>更新Transaction中的数据库

时间:2011-10-12 13:56:25

标签: c# .net sql-server petapoco

我有一个数据库表,它有2列,我有一个List,其中T有2个属性。

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

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

如果一个更新将被执行,但是如果我的列表中有100个项目需要执行此操作,则可能不一定需要事务处理?

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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();
    }
}

答案 2 :(得分:0)

除非是多次更新(即多次执行更新语句),否则您不需要交易。

也许您应该提供有关实际执行代码的更多详细信息......