首页 > 解决方案 > 如果多个语句中的任何其他语句失败,我如何反转查询影响?

问题描述

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#sql-serverentity-frameworksqlcommand

解决方案


在 C# 中,您可以TransactionScope这样使用:

using (TransactionScope t = new TransactionScope(TransactionScopeOption.Required))
{
   //do your work
   if(everything is ok)
     t.Complete();
}

推荐阅读