我有一个有 2 列的数据库表,我有一个 T 有 2 个属性的列表。
如何创建交易以便我可以有效地说:
UPDATE MyTable
SET ColumnA = List<T> 1st property
WHERE ColumnB = List<T> 2nd Property
如果要执行一次更新,则可能不一定需要交易,但如果我的列表中有 100 个项目,那么需要什么才能使其正常工作?
我有一个有 2 列的数据库表,我有一个 T 有 2 个属性的列表。
如何创建交易以便我可以有效地说:
UPDATE MyTable
SET ColumnA = List<T> 1st property
WHERE ColumnB = List<T> 2nd Property
如果要执行一次更新,则可能不一定需要交易,但如果我的列表中有 100 个项目,那么需要什么才能使其正常工作?
对于那些使用 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();
}
您需要循环执行这些更新语句,遍历您的列表
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();
}
}
除非那是多次更新(即更新语句的多次执行),否则您不需要事务。
也许您应该提供有关实际执行的代码的更多详细信息...