如何使用 EF 在 asp.net MVC 中进行多种方法的一项事务

Posted

技术标签:

【中文标题】如何使用 EF 在 asp.net MVC 中进行多种方法的一项事务【英文标题】:How to make several methods one transaction in asp.net MVC using EF 【发布时间】:2021-06-29 06:50:31 【问题描述】:

我想执行 2 个动作并使它们成为原子的。 这就是我想要实现的目标:

public IActionResult DataUserForm()

    return View();


[HttpPost]
public IActionResult Handler(data)

    /*
        Do something with data
    */
    return RedirectToAction("Index");

DataUserForm 视图向用户发送一个表单,用户可以在其中写入一些数据。然后他被重定向到处理程序,它执行一些业务逻辑并重定向到索引主页。我想把所有这些动作变成一个交易

EF 中已经有 BeginTransaction() 方法。但它只能与特定的代码块一起使用,而不能在方法中使用。我也不能将事务作为参数传递给操作,因为提交按钮和 c# 对象存在一些问题

【问题讨论】:

这感觉像是一个 XY 问题。在 Web 服务中,每个 Web 请求都在自己的范围内。为什么要尝试在两者之间保持一个开放的范围来分隔 Web 请求? 【参考方案1】:

您的 DbContext 是一个 scoped 服务,因此每个 Web 请求都有一个实例。

【讨论】:

以上是关于如何使用 EF 在 asp.net MVC 中进行多种方法的一项事务的主要内容,如果未能解决你的问题,请参考以下文章

我们如何使用 EF 在 ASP.Net MVC 应用程序中创建 3 层架构?

如何在 Asp.Net 5 (MVC 6) 中使用实体框架 6.x

ASP.NET MVC和EF集成AngularJS开发

如何仅保存/更新父实体而不将其子实体保存在 asp.net mvc 的 EF6 中?

如何在现有数据库 ASP.NET Core MVC 和 EF Core(DB-First)中使用 Identity

初探ASP.NET Mvc5+EF7的美妙旅程