C#DataAdapter和DataSet有多个表

时间:2011-01-01 16:03:33

标签: c# dataset dataadapter

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:5)

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

  2. 您可以使用Use table adapter manager同时保存所有表,适配器管理器可以有多个单独的适配器,您可以为所有人调用save。喜欢,所以不需要多次保存,也有其他功能。

    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. 最后,在数据集中处理级联更新删除。您可以查看关联的属性和级联的各种选项。(类型化数据集)