C#中DataAdapter和DataSet的多表问题

6

我从多个来源了解到,使用DataAdapter可以向DataSet填充多个表。但是并没有说明单个Update调用是否可以更新DataSet中的所有表。

请问有人能帮助我弄清楚如何实现这个功能吗?

好像并没有(我尝试在线查找)关于如何做到这一点的示例,除了在第二次填充之前更改DataAdapter上的SelectCommand的一个示例。但我感觉这种方法违背了DataAdapter的本意。

据我所知,可能单个DataAdapter只能处理单个数据库表格,并且Update仅适用于该表格。因此,多表DataSet将需要各自的DataAdapters调用它们的Update以完全更新DataSet。这是正确的吗?

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

也许提供一个示例或教程的链接会有所帮助。非常感谢!

1个回答

5
  1. Yes it is true that, Single Adapter for single table.But

  2. You can use Use table adapter manager for saving all at once, table adapter manager can have many individual adapters and you can call save for all. like, So no need to call save multiple time also it has other features too.

    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. Finally cascade update delete is handled in dataset. You can view properties of relation and various options for cascade.(Typed dataset)


+1 让我了解到设计师的新知识,谢谢。 - Jake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接