如何在 C# 中回滚查询?
Posted
技术标签:
【中文标题】如何在 C# 中回滚查询?【英文标题】:How to roll back queries in C#? 【发布时间】:2016-12-28 12:54:30 【问题描述】:我有删除查询列表,我使用以下代码执行它们:
using (var ctx = new ApplicationDbContext(schemaName))
foreach (var item in queries)
ctx.Database.ExecuteSqlCommand(item);
我想提交所有删除查询,但如果任何查询出现错误,我想回滚。
上述场景如何回滚?
【问题讨论】:
相关/可能重复:Entity Framework 6 transaction rollback 您可能正在寻找的关键字是“交易”。我已经链接了一个可能解决您问题的潜在问题。 【参考方案1】:尝试使用 TransactionScope
using System.Transactions;
try
using (var scope = new TransactionScope())
using (var ctx = new ApplicationDbContext(schemaName))
foreach (var item in queries)
ctx.Database.ExecuteSqlCommand(item);
scope.Complete();
catch (Exception ex)
【讨论】:
得到编译器错误 -'System.Activities.Statements.TransactionScope': type used in a using statement must be implicitly convertible to 'System.IDisposable'
使用 System.Transactions 命名空间中的 TransactionScope:
Object in Catch语句有错误需要Dispose
吗?
@Anup 不需要在 catch 或 finally 块中调用 Dispose。当程序退出 using 时,它会调用 Dispose以上是关于如何在 C# 中回滚查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测用户是不是在 UIScrollView 中回滚了一个视图?