我的任务是证明或反驳.net中的交易支持。我们都知道TransactionScope
可以处理提交/回滚简单的事情,比如在3个不同的表中插入3条记录,然后删除5个其他表中的5条记录。
如果这些插入/删除具有触发器,我的团队不确定TransactionScope
是否可以正确处理事务。或者,如果我们执行一个拥有它自己的嵌套事务的SP。
.net事务支持是否处理这些更复杂的情况?您是否必须指定任何不那么明显的选项才能使其全部工作?
我听说我们的一些SP可能会导致我们出现问题,因为有几个自己提交子事务。有没有人知道这个特定场景是否由TransactionScope处理?
答案 0 :(得分:2)
我们正在使用TransactionScope进行一些非常复杂和冗长的数据库操作,涉及十几个或更多表中的数千行。它处理得很好。但是,IMO,你不想在存储过程和/或触发器中启动和提交事务。你应该让你的调用(C#)代码处理它。通过处理较低存储过程级别的事务,您将失去很大的灵活性。
另外,使用TransactionScope时要小心,将自己限制为单个连接对象。如果不这样做,事务将升级为MTC事务,这需要在客户端和服务器上运行MTC服务。