Я давно отказался от использования созданных дизайнером адаптеров таблиц. Нет простого способа контролировать то, что они делают, нет простого способа изменить строку подключения для всех них ... и, конечно, нет способа заставить их работать с другим поставщиком ADO.NET, поскольку поставщик закодирован в сгенерированном коде. Адаптеры таблиц даже не наследуют общий базовый класс, поэтому вы можете написать общий код (ну, они наследуют от компонента, но это довольно бесполезно ...)
Вместо этого я использую свой собственный самодельный генератор TableAdapter. Он строит DbDataAdapter
из запроса SELECT, используя DbCommandBuilder
(на самом деле, запрос SELECT даже не является необходимым, поскольку он может быть выведен из структуры DataTable
). Для более сложных DataTables
, которые нуждаются в особой логике, я заставляю их реализовывать пользовательский IDataAdapterProvider
, чтобы они могли предоставить свои собственные DbCommands
.