C # DataAdapter и DataSet с несколькими таблицами - PullRequest
6 голосов
/ 01 января 2011

Я читал из многих мест, что можно заполнить DataSet несколькими таблицами, используя DataAdapter.В нем также не говорится, может ли один вызов Update обновить все таблицы в наборе данных.

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 01 января 2011

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

После официальных статей также очень полезная информация:

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

5 голосов
/ 01 января 2011
  1. Да, это правда, что один адаптер для одной таблицы. Но

  2. Вы можете использовать Использовать диспетчер адаптера таблицы для сохранения всего сразу, менеджер адаптера таблицыможет иметь много отдельных адаптеров, и вы можете позвонить сохранить для всех.Например, нет необходимости вызывать функцию сохранения несколько раз, и у нее есть и другие функции.

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

...