.net 在我的体系结构中使用什么-SqlTransaction或TransactionScope
我们使用3层架构,其中包含 SqlHelper->DAL(数据访问层)->BAL->UI DAL中的任何类都可以调用另一个DAL,就像任何BAL调用另一个BAL或其自身的DAL一样 例如.net 在我的体系结构中使用什么-SqlTransaction或TransactionScope,.net,transactions,transactionscope,.net,Transactions,Transactionscope,我们使用3层架构,其中包含 SqlHelper->DAL(数据访问层)->BAL->UI DAL中的任何类都可以调用另一个DAL,就像任何BAL调用另一个BAL或其自身的DAL一样 例如 display\u CusDal函数应作为事务运行,intern表示在该函数中进行的任何插入都应与事务对象相关联 由于display_CusDal可以调用display_ProDal,它可能会也可能不会在另一个事务的表中插入数据,所以我需要在事务中处理这些数据 我应该使用什么方法 SqlTransactions
display\u CusDal
函数应作为事务运行,intern表示在该函数中进行的任何插入都应与事务对象相关联
由于display_CusDal可以调用display_ProDal,它可能会也可能不会在另一个事务的表中插入数据,所以我需要在事务中处理这些数据
我应该使用什么方法 SqlTransactions只与SQL一起工作,需要您显式地添加它们的用法。TransactionScope的优点是可以有更多的参与方加入交易。因此,不仅是SqlTransactions,还有来自其他类型的事务。在使用事务作用域时,也会删除很多代码 另一方面,使用事务作用域可以引入相当多的wierd行为。在模糊的情况下,材料会上报给MSDTC 对于您的情况,事务范围听起来是最好的选择。通过这种方式,可以很容易地在单个事务中连接在
客户数据集
和产品数据集
上执行的多个操作,或在同一数据集上执行的多个操作
SqlTransactions的Pro
- 容易理解
- 明确的
- 你有完全的控制权
- 需要更多的代码
- 更难加入更多的政党
- 更难加入其他事务
- 将事务绑定到SQL(因此切换到其他持久存储时不支持)
- 易于使用
- 使您的代码保持简单,您无需担心
和Customer\u DAL
的混合Product\u DAL
- 伟大的交易管理开箱即用。当使用多个数据库时,包括升级到MSDTC
- 当升级发生时模糊
class Customer_DAL { display_CusDal(); }
class Customer_BAL { display_CusBal(); }
class Product_DAL { display_ProDal(); }
class Product_BAL { display_ProBal(); }
display_CusDal()
{
//call display_ProDal()
//Do some work
}