C# DataAdapter и DataSet с несколькими таблицами
Я прочитал из многих мест, что можно заполнить набор данных несколькими таблицами с помощью DataAdapter. Он также не говорит, Может ли один вызов обновления обновить все таблицы в наборе данных.
может кто-нибудь помочь мне выяснить, как это можно сделать?
похоже, что нет никаких (я попытался найти онлайн ) примеров о том, как это сделать, за исключением одного, который изменяет SelectCommand на DataAdapter перед вторым заполнением. Но я чувствую этот метод побеждает цель DataAdapter.
из того, что я считаю, возможно, один DataAdapter может обрабатывать только одну таблицу базы данных, а Update работает только в этой таблице. Следовательно, набор данных с несколькими таблицами потребует соответствующего вызова DataAdapters для полного обновления набора данных. Это так?
наконец, внешний ключ отношения и ограничения в наборе данных (каскадное удаление, обновление каскадом) автоматически?
возможно, ссылка на пример или учебник может помочь. Большое спасибо!
2 ответов
может быть, эта статья поможет:
- заполните набор данных несколькими таблицами и обновите их с помощью DataAdapter
- набор данных C# с несколькими таблицами-OLEDB
следующие официальные статьи также очень полезную информацию:
- навигация по нескольким связанным таблицам в ADO.NET Dataset
- заполнение набора данных из DataAdapter (ADO.NET)
посмотреть "заполнение набора данных из нескольких адаптеров данных" в вышеуказанной статье.
Да, это правда, один адаптер для одной таблицы.Но!--4-->
-
вы можете использовать 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);
}
наконец, удаление каскадного обновления обрабатывается в dataset. Вы можете просмотреть свойства связи и различные варианты каскада.(Типизированный набор данных)