C#DataAdapter和DataSet有多个表

我从很多地方读过,可以使用DataAdapter用多个表填充DataSet。 它也没有说明单个Update调用是否可以更新DataSet中的所有表。

有人可以帮我弄清楚如何做到这一点?

似乎除了在第二次填充之前更改DataAdapter上的SelectCommand的示例之外,没有任何(我尝试在线查找)示例。 但我觉得这种方法违背了DataAdapter的目的。

从我的数据来看,也许单个DataAdapter只能处理单个数据库表,而Update只能在该表上运行。 因此,多表DataSet将要求相应的DataAdapter调用其Update以完全更新DataSet。 是这样的吗?

最后,外键关系和约束会自动保存在DataSet(级联删除,级联更新)中吗?

也许链接到示例或教程可能会有所帮助。 非常感谢!

可能这些文章会有所帮助:

  • 使用多个表填充DataSet并使用DataAdapter更新它们
  • 具有多个表的C#数据集 – OLEDB

以下官方文章也非常有用的信息:

  • 在ADO.NET数据集中导航多个相关表
  • 从DataAdapter填充DataSet(ADO.NET)

请查看上一篇文章中的“从多个DataAdapter填充数据集”部分。

  1. 是的,单个适配器适用于单个表。但是

  2. 您可以使用使用表适配器管理器一次保存所有,表适配器管理器可以有许多单独的适配器,您可以为所有人调用保存。 喜欢,所以不需要多次调用保存也有其他function。

    public void SaveWithManager() { DataSet1TableAdapters.TableAdapterManager mgr1 = new DataSet1TableAdapters.TableAdapterManager(); DataSet1TableAdapters.Table1TableAdapter taTbl1 = new DataSet1TableAdapters.Table1TableAdapter(); DataSet1TableAdapters.Table2TableAdapter taTbl2 = new DataSet1TableAdapters.Table2TableAdapter(); mgr1.Table1TableAdapter = taTbl1; mgr1.Table2TableAdapter = taTbl2; mgr1.UpdateOrder = DataSet1TableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete; mgr1.UpdateAll(your dataset); 

    }

  3. 最后,在数据集中处理级联更新删除。 您可以查看关系的属性和级联的各种选项。(类型化数据集)