当我的C#.net应用程序在多个表中更新记录时,我使用事务,以便在事务期间发生任何错误时可以回滚。
哪种做法更好?
-使用带有BEGIN TRANSACTION/ROLLBACK/COMMIT TRANSACTION的存储过程; -在应用程序中使用TransactionScope,如下所示:
using (TransactionScope ts = new TransactionScope())
{
}
当我的C#.net应用程序在多个表中更新记录时,我使用事务,以便在事务期间发生任何错误时可以回滚。
哪种做法更好?
-使用带有BEGIN TRANSACTION/ROLLBACK/COMMIT TRANSACTION的存储过程; -在应用程序中使用TransactionScope,如下所示:
using (TransactionScope ts = new TransactionScope())
{
}
这不是一个业务逻辑问题,而是一个数据完整性问题,我认为在存储过程中处理这个问题是可以的。我喜欢尽可能将事务逻辑靠近操作以缩短它们的持续时间。
TransactionScope是一种非常好的管理代码事务的方式。它允许您跨多个方法嵌套交易代码,并在必要时自动扩展到分布式模式。
我更喜欢使用TransactionScope而不是存储过程事务,因为它在代码中给了您更多的控制权。
我强烈建议在页面上设置一个过程来管理所有的SQL操作。如果有多个需要执行多个过程的任务,只需让一个过程管理其他过程即可。您的过程始终可以返回多个记录集(如有需要)。
以下是我使用事务的两个简单规则: