我从许多地方读过,可以使用DataAdapter用多个表填充DataSet。它也没有说明单个Update调用是否可以更新DataSet中的所有表。
有人可以帮我弄清楚如何做到这一点吗?
似乎除了在第二次填充之前更改DataAdapter上的SelectCommand的示例之外,没有任何(我尝试在线查找)示例。但我觉得这种方法违背了DataAdapter的目的。
从我的数据来看,也许单个DataAdapter只能处理单个数据库表,而Update只能在该表上运行。因此,多表DataSet将要求各自的DataAdapter调用其Update以完全更新DataSet。是这种情况吗?
最后,外键关系和约束会自动保存在DataSet(级联删除,级联更新)中吗?
也许指向示例或教程的链接可能有所帮助。非常感谢!
答案 0 :(得分:6)
可能这些文章会有所帮助:
以下官方文章也非常有用的信息:
请查看上文中的“从多个DataAdapter填充数据集”部分。
答案 1 :(得分:5)
是的,单个适配器适用于单个表。但
您可以使用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);
}
最后,在数据集中处理级联更新删除。您可以查看关联的属性和级联的各种选项。(类型化数据集)