如果我有3个sql查询,并且所有三个必须执行或没有。如果我在asp.net代码或存储过程中编写此查询,有什么区别吗?
答案 0 :(得分:2)
如果您正在为一个数据库实例上的当前连接做一切,基本上您将看到使用T-SQL事务(BEGIN TRAN / COMMIT TRAN)或ADO.NET事务(TransactionScope,BeginTransaction ...)
但请注意,您可以使用事务范围在一个事务中对多个连接(对多个数据库实例的请求)进行分组。
答案 1 :(得分:2)
两者都是有效的管理交易方式。使用存储过程的优点是网络流量更少,执行速度更快,数据库内容封装更好等,而使用asp.net可以让您涉及一些高级逻辑或使用其他编程的一部分,这可能会影响您的查询。
答案 2 :(得分:1)
您可以像在数据库中使用事务一样使用.NET中的TransctionScope
。
请注意选择正确的isolation level。
默认情况下,TransactionScope
使用Serializable隔离级别执行。这可能不是你想要的。
数据库默认隔离级别更可能是“已提交读”。
答案 3 :(得分:0)
出于效率原因,您最好使用可以回滚错误的事务编写SP。如果只是为了简单起见,直接使用SQL,以及SP可以编译一次,以便将来更快地执行。
答案 4 :(得分:0)
使用SqlConnection.BeginTransaction()
时没有区别。