我正在开发一个Asp.net MVC应用程序,我创建了一个错误处理系统,迫使我在BLL中为每个函数创建以下代码。
try
{
...
_unitOfWork.Save(nameof(Function));
}
catch
{
if (rollbackTo != null)
{
_unitOfWork.RollbackToSave(rollbackTo);
}
else
{
_unitOfWork.Rollback();
}
throw;
}
这基本上允许我管理我的每个请求的事务,并管理事务的错误处理,而我的控制器不知道这样做的实际方式 - 它只允许它决定事务是否会继续(rollbackTo
参数)
我想知道的是,有没有办法让我不必一遍又一遍地编写这段代码?我想过只抛出一个异常,然后在我的管道中处理它 - 但是因为我需要向用户返回一个有价值的响应,而不仅仅是一个500代码 - 这不是一个真正的选择。我想过可能会创建一个调用和抽象方法的基类 - 并按功能实现它 - 但这也不会起作用,因为参数可以改变。任何想法?