C# DataAdapter и DataSet с несколькими таблицами

Я прочитал из многих мест, что можно заполнить набор данных несколькими таблицами с помощью DataAdapter. Он также не говорит, Может ли один вызов обновления обновить все таблицы в наборе данных.

может кто-нибудь помочь мне выяснить, как это можно сделать?

похоже, что нет никаких (я попытался найти онлайн ) примеров о том, как это сделать, за исключением одного, который изменяет SelectCommand на DataAdapter перед вторым заполнением. Но я чувствую этот метод побеждает цель DataAdapter.

из того, что я считаю, возможно, один DataAdapter может обрабатывать только одну таблицу базы данных, а Update работает только в этой таблице. Следовательно, набор данных с несколькими таблицами потребует соответствующего вызова DataAdapters для полного обновления набора данных. Это так?

наконец, внешний ключ отношения и ограничения в наборе данных (каскадное удаление, обновление каскадом) автоматически?

возможно, ссылка на пример или учебник может помочь. Большое спасибо!

2 ответов


может быть, эта статья поможет:

следующие официальные статьи также очень полезную информацию:

посмотреть "заполнение набора данных из нескольких адаптеров данных" в вышеуказанной статье.


  1. Да, это правда, один адаптер для одной таблицы.Но!--4-->

  2. вы можете использовать Use table adapter manager для сохранения всех сразу, table adapter manager может иметь много отдельных адаптеров, и вы можете вызвать save for all. как, так что нет необходимости звонить сохранить несколько раз, также у него есть и другие функции.

    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. наконец, удаление каскадного обновления обрабатывается в dataset. Вы можете просмотреть свойства связи и различные варианты каскада.(Типизированный набор данных)