c# - 如果多个语句中的任何其他语句失败,我如何反转查询影响?
问题描述
var sqlCommand= "@ DELETE FROM table1 WHERE id = @Id
DELETE FROM table2 WHERE id = @Id ";
var isDeleted = db.Database
.ExecuteSqlCommand(sqlCommand, new SqlParameter("@Id", Id)) > 0;
问题是,如果第二条或任何其他语句失败,则前一条保持不变,即已被删除。
如果其中任何一个失败并返回false,我希望它反转。
注意:它必须以相同的方式完成,而不是在存储过程中。
解决方案
在 C# 中,您可以TransactionScope
这样使用:
using (TransactionScope t = new TransactionScope(TransactionScopeOption.Required))
{
//do your work
if(everything is ok)
t.Complete();
}
推荐阅读
- android - HighChart 库 Android:在 HIChartView 中找不到 HIOptions
- reactjs - 反应康瓦得到
子组件声明中的属性 - c# - 在 C# 中发送邮件在发布版本中不起作用
- robotframework - 如何使用机器人框架验证 SVG 图标
- javascript - 如何调用数据 setState 来响应渲染返回?
- html - 在 html 设计中不使用表格创建价格表
- javascript - 过滤数组并根据另一个数组重新排序数组
- c++ - 在常量函数中增加一个计数器
- ios - OAuthSwift WKWebView 在一个恒定循环中打开和关闭
- antlr4 - 在 antlr 中解析完整的字符串,但只提取字符串的一部分