【问题标题】:C# DataAdapter and DataSet with multiple table具有多个表的 C# DataAdapter 和 DataSet
【发布时间】:2011-06-02 06:08:18
【问题描述】:

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

谁能帮我弄清楚如何做到这一点?

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

据我所知,也许单个 DataAdapter 只能处理单个数据库表,而 Update 仅适用于该表。因此,多表 DataSet 将需要各自的 DataAdapter 调用它们的 Update 来完全更新 DataSet。是这样吗?

最后,外键关系和约束是否会自动保存在数据集中(级联删除、级联更新)?

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

【问题讨论】:

    标签: c# dataset dataadapter


    【解决方案1】:
    1. 是的,单表的单适配器。但是

    2. 您可以使用使用表适配器管理器一次保存所有适配器,表适配器管理器可以有许多单独的适配器,您可以调用 save for all。喜欢,所以不需要多次调用 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. 最终级联更新删除在数据集中处理。您可以查看关系的属性和级联的各种选项。(类型化数据集)

    【讨论】:

    • +1 让我了解设计师的一些新情况。谢谢。
    猜你喜欢
    • 2019-02-12
    • 2016-11-11
    • 2011-02-12
    • 2012-02-08
    • 2011-10-26
    • 2014-02-11
    • 1970-01-01
    • 2011-06-02
    • 2011-11-17
    相关资源
    最近更新 更多