Asp.Net MVC回滚更改?

时间:2018-03-14 14:19:26

标签: asp.net-mvc linq transactions rollback

假设,我有一个更新大量表的操作。 E.g。

public action Save()
{
    Employee Emp = new Employee();
    Emp.Name = "Test";
    db.Employees.Add(emp);
    db.SaveChanges();

    Job job = new Job();
    Job.Name = "Test";
    db.Jobs.Add(job);
    db.SaveChanges();

    Status status = new Status();
    status.Name = "Test";
    db.Status.Add(status);
    db.SaveChanges();
}

首先,我知道我应该只调用db.SaveChanges()一次,但我在谈论复杂的情况。或者我应DbContextTransaction,以便commitrollback次交易。

假设,我遵循我的代码方法并且第二个查询中存在任何问题,那么第一个查询事务将不是rollback,并且第三个查询将不会被执行。

我只是想知道是否还有其他方法,除了上面提到的那两个方法,如果在任何查询中没有错误就执行所有方法,否则不执行任何查询。

1 个答案:

答案 0 :(得分:0)

仅使用一个SaveChanges(),如下所示。如果它成功,它将更新所有表..如果它失败了,那么它将全部失败并回滚。可能你知道它。但是你能告诉我,你需要在你的问题中指明的确切的现实生活情况吗?

public action Save()
{
    Employee Emp = new Employee();
    Emp.Name = "Test";
    db.Employees.Add(emp);

    Job job = new Job();
    Job.Name = "Test";
    db.Jobs.Add(job);


    Status status = new Status();
    status.Name = "Test";
    db.Status.Add(status);

    db.SaveChanges();
}