【问题标题】:Atomicity of Data Adapter in ADO.NETADO.NET中数据适配器的原子性
【发布时间】:2010-12-06 07:02:34
【问题描述】:

我是 ADO.NET 的新手并且正在学习它。我想知道 ADO.NET 中的数据适配器是否在填充数据集和更新数据库时自己提供原子性或 ACID 属性,或者我们是否必须显式使用事务来实现这一点。

假设:

  • 我想通过数据适配器从数据库中获取数据到数据集
  • 向网站发送一些信息
  • 对数据集中的数据进行一些更改
  • 使用 DataAdapter.Update(DataSet) 更新数据库

我希望一次性完成所有步骤(如果需要,可以排除第一步,因为这将是一个可以一次性获取的离线数据),我需要一个事务吗?如果不是怎么实现呢?

【问题讨论】:

    标签: ado.net transactions atomic dataadapter


    【解决方案1】:

    我已经用 Reflector 检查了SqlDataAdapter 的实现,在我看来,它好像只是依次执行相关命令(InsertCommandUpdateCommandDeleteCommand),没有强加任何排序他们周围的交易。我怀疑微软编写的所有其他类型的适配器都会以同样的方式工作。

    如果你想要原子更新,你应该创建自己的事务,例如

    using(var scope = new TransactionScope()) {
        adapter.Update(dataSet);
        scope.Complete();
    }
    

    【讨论】:

    • 感谢您的回复..我正在尝试使用它:)
    猜你喜欢
    • 2014-09-06
    • 2011-05-14
    • 2010-10-13
    • 2011-03-04
    • 2018-05-29
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多