私のプロジェクトが.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 に渡す必要があります。
それは少し醜いです。
この状況に対するエレガントな方法は何だろうか。