c# Entity Framework 抛出异常但不回滚数据库

标签 c# mysql sql entity-framework model-view-controller

我有一个简单的查询来更新我数据库中的两个表

public void UpdateLogins(int userId)
{
    using (var context = new storemanagerEntities())
    {
        user item = context.users.Where(x => x.id == userId).FirstOfDefault();
        item.logins += 1;
        context.SaveChanges();

        account accountItem = context.accounts.Where(x => x.userId == userId).FirstOfDefault();
        accountItem.logins += 1;
        context.SaveChanges();
    }
}

但是如果我只是一个“throw new Exception();”他们之间是这样的

        context.SaveChanges();

        throw new Exception();

        account accountItem = context.accounts.Where(x => x.userId == userId).FirstOfDefault();

用户表没有更新但是我的账户表没有更新,数据库保存了这些更改。如果抛出异常,我如何告诉我的数据库回滚更改?

谢谢

最佳答案

试试这个:

using (TransactionScope txScope = new TransactionScope())
{    
    using (var context = new storemanagerEntities())
    {
        user item = context.users.Where(x => x.id == userId).FirstOfDefault();
        item.logins += 1;
        context.SaveChanges();

        account accountItem = context.accounts.Where(x => x.userId ==     userId).FirstOfDefault();
        accountItem.logins += 1;
        context.SaveChanges();
     }
     txScope.Complete();
 }

关于c# Entity Framework 抛出异常但不回滚数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22556623/

相关文章:

sql - SQL :中如何将数据转换成这种形式

sql - Postgres ON CONFLICT 设置列引用不明确

sql - 如何从Grails中的SQL查询获取字符串值?

C#设置ListView的Item的Subitem的文本不显示

c# - 当工厂方法返回 null 时,我应该抛出什么异常?

php - 当连接在没有提交或回滚的情况下关闭时,mysqli 事务会发生什么?

php - Twig 循环遍历数组,值为 "."

c# - Dotnet core 3.1 和 Angular 9 的 AAD 注册

c# - 使用 Nunit 在 ASP MVC Controller 中测试异步方法

mysql查询与when语句比较