我想使用过滤器来管理具有以下要求的事务。
Authorization Filter
之后执行(我没有
想明确使用order
我认为过滤器的实现如下:
private IDbContextTransaction _tx;
private readonly MyDbContext _dbContext;
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
_tx = _dbContext.Database.BeginTransaction();
}
public override void OnActionExecuted(ActionExecutedContext context)
{
if (context.Exception == null)
{
_tx.Commit();
}
else
{
_tx.Rollback();
}
}
然后我想将它用于下面的命令操作:
[HttpPost]
[Command]
public IActionResult Create([FromBody] CreateTodoCommand cmd)
{
}
根据文件:
资源过滤器是第一个处理请求的过滤器 授权,以及在离开时触摸请求的最后一个 过滤器管道。它们对于实现缓存或特别有用 否则会因性能原因而使滤波器管道短路。
在我的案例中使用似乎是可行的。如果没有其他解决方案我将继续这样做。另一方面,我想尝试编写自己的自定义过滤器类型,如Authorization Filter
,并将其放在过滤器管道中。
问题:如何实施自定义过滤器?
答案 0 :(得分:0)
您可以创建一个自定义属性并将其设置为您的操作。
using Microsoft.AspNetCore.Mvc.Filters;
public class CustomActionFilter: Attribute, IActionFilter {
public void OnActionExecuting(ActionExecutingContext context) {
}
}