【问题标题】:DataAdapter.Update() and its use of the dataset relationship schemaDataAdapter.Update() 及其对数据集关系模式的使用
【发布时间】:2018-05-01 17:23:04
【问题描述】:

我有一个包含多个表的数据集和必要的关系,以便以正确的顺序调用 SQL 语句。

当调用 Adapter.Update() 方法时,我假设它会搜索所有表之间的关系以确定它进行 SQL 调用的顺序。

例如:

  • 表 A 中的删除首先需要表 B 中的删除。
  • 表 B 中的插入首先需要表 A 中的插入。

如何利用它用来实施我自己的更新策略的机制?

原因是,我不能允许适配器执行更新,而是需要调用存储过程。

* * * * * * 编辑 * * * * * *

数据集从 UI 客户端传递到后端服务器组件。 在后端服务器上,发生 DataAdapter.Update(dataSet)。

【问题讨论】:

    标签: ado.net dataset dataadapter


    【解决方案1】:

    也许您可以在您的表上使用 RowUpdating 事件并从那里调用您的存储过程...还将 SqlRowUpdatingEventArgs.Status 设置为 SkipCurrentRow 以防止触发标准更新 Sql 命令并调用 SqlRowUpdatingEventArgs.Row.AcceptChanges() 来将 RowState 设置回 Unchanged ...

    【讨论】:

    • 非常感谢 - 我正在探索这个建议。但是,我有多个表,DataAdapter 决定做什么和什么时候做。似乎不是专注于粒度表级别,而是拦截 DataAdapter 执行的命令。您的建议是否考虑到这一点?
    • 也就是说,我正在做的不是DataAdpater.Update(table),而是DataAdapter.Update(dataSet)。
    • 这就是重点......希望......您在数据集上调用 Update 并且框架以正确的顺序触发您的表的 RowUpdating 事件......但我不得不承认我没有t验证它实际上是这样工作的......
    • 再次感谢 - 我做了一些简单的测试,似乎这些事件在表格被修改时开始了。我需要一些东西来连接更新并在它处理的每一行上触发。但是,我会继续按照您的建议工作,看看是否仍然可以使用它。
    • 嘿等等! DataAdapter 还有一个“RowUpdating”属性!!!我来看看能买什么!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2013-10-29
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多