是否可以为控制器创建属性,它通过一个事务将所有查询执行到数据库中?

Is it possible to create Attribute for controller, which executes all query into db via one transaction?

我的意思是下一种情况。这个例子有点难看,但它正是我想要的。

[MyAttribute]
public MyController
{
     [Post]
     public void CoolStuff(int id, Item item)
     {
          User user = _userRepository.Get(id);

          Bucket bucket = _bucketRepository.Get(user.bucketId);

          bucket.Add(item);

          _bucketRepository.Save(bucket);
     }
}

数据库中有 3 个问题。我希望 [MyAttribute] 在事务中收集这些查询并执行。你有什么想法吗?

看看ActionFilterAttribute。您可以从 ActionFilterAttribute 派生自定义属性并覆盖两个方法:

OnActionExecuting - 打开交易
OnActionExecuted - 提交或回滚事务

希望对您有所帮助!