我有一些使用BeginTransaction()
的简单代码。生成的事务将分配给我用于某些sql命令的连接。
当我分析生成的sql时,我在任何时候都看不到BEGIN TRANSACTION
。可能会发生什么阻止交易被使用?
答案 0 :(得分:2)
使用ADO.NET时,事务处理程度较低。没有“BEGIN TRANSACTION”语句发送到服务器。
答案 1 :(得分:0)
您需要确保不仅要在连接对象上设置事务,还需要将事务分配到sqlCommand中。
有关示例,请参阅this codeproject文章。
答案 2 :(得分:0)
重申菲利普的声明:
使用ADO.NET时,会在较低级别处理事务。没有“BEGIN TRANSACTION”语句发送到服务器。
在某些时候,SQL必须转换为实际调用。大多数ADO.NET(我曾经使用过的)经常向BEGIN,COMMIT和ROLLBACK事务发送一个特定于数据库的命令,因为发送ASCII(或其他任何东西)的效率低于服务器解析的内容。
这就是为什么发送参数化查询通常比基于纯SQL的查询更快,因为库可以发送特定命令,这样可以减少解析并减少数据验证(?)。
HTH!