当我的C#.net应用程序更新多个表中的记录时,我使用事务,因此如果在事务期间任何事情发生故障我可以回滚。
哪一个是更好的做法?
- 使用BEGIN TRANSACTION / ROLLBACK / COMMIT TRANSACTION存储过程; - 在应用程序中使用TransactionScope如下:
using (TransactionScope ts = new TransactionScope())
{
}
答案 0 :(得分:4)
这不是业务逻辑问题,它是一个数据完整性问题,我觉得可以在存储过程中执行。我希望将事务逻辑保持尽可能接近操作,以缩短其持续时间。
答案 1 :(得分:3)
TransactionScope是一种非常好的方法来管理代码中的事务。它允许您跨多个方法嵌套交易代码,并在必要时自动扩展到分布式模式。
我更喜欢使用TransactionScope而不是存储过程事务,因为它可以让你在代码中有更多的控制权。
答案 2 :(得分:1)
或者你可以在两者中做到。检查链接:http://www.4guysfromrolla.com/webtech/080305-1.shtml
答案 3 :(得分:1)
如果你的交易是去一个数据库,那么最好在存储过程中进行交易。另一种方式只能由后勤问题引起(DBA不喜欢你,或者他正在度假)。 如果在一个事务中调用不同的事务源(SQL Server和Oracle),那么除了在代码中执行事务之外别无选择。
答案 4 :(得分:1)
我强烈建议为页面设置一个过程并在那里管理所有sql操作。如果要在多个过程的页面上执行多个任务,只需要一个过程来管理其他过程。如果需要,您的处理可以始终返回多个记录集。
答案 5 :(得分:1)
以下是关于何时使用交易的2条简单规则: