我有一个数据库表,它有2列,我有一个List,其中T有2个属性。
如何创建交易以便我可以有效地说:
UPDATE MyTable
SET ColumnA = List<T> 1st property
WHERE ColumnB = List<T> 2nd Property
如果一个更新将被执行,但是如果我的列表中有100个项目需要执行此操作,则可能不一定需要事务处理?
答案 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)
除非是多次更新(即多次执行更新语句),否则您不需要交易。
也许您应该提供有关实际执行代码的更多详细信息......