代码之家  ›  专栏  ›  技术社区  ›  Mahesh Velaga

ADO.NET中数据适配器的原子性

  •  0
  • Mahesh Velaga  · 技术社区  · 17 年前

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

    让我们说:

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

    我希望所有步骤(如果需要,可以排除第一步,因为它将是一个可以一次提取的脱机数据)都一次性完成,原子地说,我需要一个事务吗?如果不是,如何实现这一点?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Christian Hayter    17 年前

    我已经检查了 SqlDataAdapter 在我看来,它好像只是执行相关的命令( InsertCommand , UpdateCommand , DeleteCommand )一个接一个地按顺序进行,而不在它们周围施加任何类型的事务。我怀疑微软编写的所有其他类型的适配器都会以同样的方式工作。

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

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