我们能否根据1个请求将交易范围应用于整个API操作

时间:2019-04-16 12:56:30

标签: c# entity-framework linq asp.net-web-api

我正在使用Web API和EntityFramework 6.2。调度程序将为每个customerID调用API。对于一个请求,API将执行10个操作。  现在,任何一项操作都失败了,这10个操作应该针对该特定请求进行回滚。

1 个答案:

答案 0 :(得分:1)

如果您有一个采用CustomerID列表的单一Controller方法,那么这很简单。只需调用以下方法:

static void DoStuffToCustomers(List<int> customerIds)
{
    using (var db = new Db())
    using (var tran = db.Database.BeginTransaction())
    {
        foreach (var id in customerIds)
        {
            db.DoStuffToCustomer(id);
        }
        db.SaveChanges();
        tran.Commit();
    }
}

如果您有10个单独的HTTP请求,则甚至不建议尝试。