【发布时间】:2020-01-02 23:08:46
【问题描述】:
我有以下代码:
public void Execute(string Query, params SqlParameter[] Parameters)
{
using (var Connection = new SqlConnection(Configuration.ConnectionString))
{
Connection.Open();
using (var Command = new SqlCommand(Query, Connection))
{
if (Parameters.Length > 0)
{
Command.Parameters.Clear();
Command.Parameters.AddRange(Parameters);
}
Command.ExecuteNonQuery();
}
}
}
对于不同的查询,该方法可能会被调用 2 或 3 次,但方式相同。
例如:
- 插入员工
- 插入员工证书
- 在另一个表上更新员工学位 [ 此处可能导致失败。例如]
如果点 [3] 失败,所有已经提交的命令都不应该执行,必须回滚。
我知道我可以将SqlTransaction 放在上面并使用Commit() 方法。但是如果失败了,第三点呢?我认为第 3 点只会回滚,而第 1,2 点不会?如何解决这个问题,我应该怎么做??
我应该使用SqlCommand[] 数组吗?我该怎么办?
我只发现类似的问题,但在 CodeProject 中:
【问题讨论】:
标签: c# .net sql-server transactions ado.net