gpt4 book ai didi

c# - C#中如何通过多层代码使用事务

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:07 26 4
gpt4 key购买 nike

假设我的项目是 .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。

有点丑。

我想知道这种情况的优雅方法是什么。

最佳答案

我假设您正在寻找 ADO.NET 中的事务。

基本上您需要将您的“操作”包装到一个 TransactionScope 中。

    try
{
using(TransactionScope ts = new TransactionScope())
{
//perform SQL
using(SqlHelper sh = new SqlHelper())
{
//do stuff
}

//call new DAL function

//call other DAL function

ts.Complete();
}
}
catch(Exception ex)
{
throw ex;
}

关于c# - C#中如何通过多层代码使用事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18126327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com