首页 > 解决方案 > 我们可以将事务范围应用于 1 个请求的整个 API 操作吗

问题描述

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

标签: c#entity-frameworklinqasp.net-web-api

解决方案


如果您有一个采用 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 请求,甚至不建议尝试。


推荐阅读