gpt4 book ai didi

asp.net-mvc - 使用 Asp.Net MVC 进行自动交易的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-02 00:45:34 25 4
gpt4 key购买 nike

我对在我的 MVC 应用程序中各处编写以下代码感到恼火。

using(var tx = new TransactionScope()){
blah...
tx.Complete()
}

我想以某种方式制作这个烘干机。

为此我想到了几个不同的选择。

  1. 以声明方式将某些操作标记为事务性操作的操作过滤器。
  2. 重写 Controller 基类中的 OnActionExecuting 并使所有操作一次性完成。

这些都是好主意吗?我应该注意什么问题?第二个选项似乎是产生大量死锁的好方法。

哦,是的,我还使用 StructureMap 和自定义 Controller 工厂将 dep 注入(inject)我的 Controller ,以防有人知道以这种方式注入(inject)事务的一些技巧。

最佳答案

您可以使用 Unit of Work pattern做你的交易管理。工作单元模式的主要好处是您可以将事务策略放在一个地方,或者当您有多个策略时放在几个地方。最简单的工作单元接口(interface)可能是:

public interface IUnitOfWork
{
void Start();
void Commit();
void RollBack();
}

您可以为不同的 ORM 或存储过程或硬编码的 sql 创建各种 UnitOfWork 实现。您可以在请求的开头开始事务。事务可以在请求结束时处理。在处置之前,您可以将提交包装在一个 try-catch block 中,并在 catch 中回滚。

try
{
unitOfWork.Commit();
}
catch
{
unitOfWork.RollBack();
throw;
}

事务启动策略有:

  • Per request:一个事务用于整个请求,这是大多数情况下的最佳方式。
  • 每个请求多次:每个方法一个事务。
  • 每次对话:您可以围绕购物车结账流程的多个请求创建交易。

您可以通过以下方式管理您的交易:

  • 属性
  • global.asax 中的 application_begin 和 endrequest 方法
  • http模块

使用 StructureMap 时,您可以在工作单元配置中使用混合缓存作为 InstanceScope。您可以使用 StructureMap 将工作单元注入(inject)存储库。

关于asp.net-mvc - 使用 Asp.Net MVC 进行自动交易的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com