假设我的项目就像.net petshop。它有一个 BLL、DAL 和 SQLHelper。
通常,我在 web 层调用 BLL 函数,BLL 函数调用 DAL 函数,最后,DAL 调用 sqlhelper。
但在某些情况下,我需要一笔交易。
例如:
网络层:
我需要调用一些 BLL 函数。代码如下:
var m = BLLFunction_1();
var n= BLLFunction_2();
if (m+n<100)
{
// need rollback here
}
else
{
BLLFunction_3();
// commit here
}
所以我不得不在web层使用一个事务对象,把它传入BLL函数,BLL层把它传给DAL层,最后传给SQLHelper。
这有点难看。
我想知道这种情况有什么优雅的方法。