您可以在向启用了分层更新的数据库中保存数据集中的已修改数据时,控制 TableAdapterManager 发送保存数据所需的单个 Insert、Update 和 Delete 的顺序。分层更新的默认执行顺序是 Insert、Update、Delete。TableAdapterManager 提供了一个 UpdateOrder 属性,可对该属性进行设置,从而首先执行 Update,然后执行 Insert,最后执行 Delete。
默认情况下,TableAdapterManager 会对数据集中的所有表,先执行 Insert,然后执行 Update,最后执行 Delete,了解这一点是很重要的。
更改现有记录的主键值时,将更新顺序更改为先执行 Update 将会很有帮助。首先执行 Update,就可以按照预期修改现有记录。首先执行 Insert 将会创建新记录,因为数据库中尚不存在新的主键。
过程
设置分层更新的执行顺序
在“设计”视图中,打开包含执行更新的 TableAdapterManager 的窗格。
在组件栏中单击 TableAdapterManager。
在**“属性”窗口中,将“UpdateOrder”**属性设置为您的应用程序所要求的顺序。
以编程方式设置分层更新的执行顺序
下面的代码可将 TableAdapterManager 设置为对所有表,先执行 Update,然后执行 Insert,最后执行 Delete。(将 yourDataSetTableAdapters 替换为您项目中的有效名称。)
Me.TableAdapterManager.UpdateOrder = _ yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.UpdateInsertDelete
this.tableAdapterManager.UpdateOrder = yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.UpdateInsertDelete;
下面的代码可将 TableAdapterManager 设置为对所有表,先执行 Insert,然后执行 Update,最后执行 Delete。这是 TableAdapterManager 的默认行为。
Me.TableAdapterManager.UpdateOrder = _ yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete
this.tableAdapterManager.UpdateOrder = yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;