代码之家  ›  专栏  ›  技术社区  ›  ilivewithian

BeginTransaction未调用Begin Transaction

  •  1
  • ilivewithian  · 技术社区  · 15 年前

    我有一个简单的代码 BeginTransaction() .结果事务被分配给我用于某些SQL命令的连接。

    当我分析结果SQL时,我没有看到 BEGIN TRANSACTION 在任何时候。会发生什么情况阻止使用事务?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Philippe Leybaert    15 年前

    使用ADO.NET时,事务处理的级别较低。没有向服务器发送“BEGIN TRANSACTION”语句。

        2
  •  0
  •   Jayden    15 年前

    您需要确保不仅在连接对象上设置事务,而且还需要将事务分配到sqlcommand。

    this 例如,codeproject文章。

        3
  •  0
  •   mimetnet    15 年前

    重申菲利普的声明:

    使用ADO.NET时,事务处理的级别较低。没有向服务器发送“BEGIN TRANSACTION”语句。

    在某些时候,必须将SQL转换为实际调用。大多数ADO.NET(我所使用的所有工具)经常发送一个特定于数据库的命令来开始、提交和回滚事务,因为发送ASCII(或其他任何内容)的效率比服务器必须执行的操作要低。 解析 .

    这就是为什么发送参数化查询通常比纯基于SQL的查询更快的原因,因为库可以发送特定的命令,这会导致更少的解析,可能更少的数据验证(?).

    嗯!