Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0


Передача изменений в базу данных через TableAdapter


Отдельно необходимо остановиться на методах передачи изменений обратно в базу данных. VS .Net 2005 умеет генерировать код запросов для методов insert, update, delete. В некоторых случаях этого может оказаться достаточно, но, как показывает опыт, полученные SQL-выражения пытаются претендовать на универсальность и поэтому не оптимальны, а порой не работоспособны.

Приведу пример: В поставке с Firebird идет база данных employee.fdb. В ней есть таблица SALES. Прежде всего, обращаю внимание на поле AGED, которое доступно только для чтения, т.к. вычисляется с помощью выражения

COMPUTED BY (ship_date - order_date)

Если указать для Select Command текст:

SELECT * FROM SALES

то колонка AGED будет добавлена во все команды обновления. При попытке передать изменения в базу, будет сгенерировано исключение. Необходимо вручную отредактировать текст запросов для insert, update, delete команд и убрать из обновления данную колонку.

Отредактировать SQL выражения можно, вызвав команду «Edit Queries in DataSet designer»:

tableAdapter_EditQueries1.gif

Откроется дизайнер DataSet, в котором необходимо выбрать нужный TableAdapter (в данном случае это SALESTTableAdapter):

tableAdapter_SALES_TABLE.gif

В списке свойств появятся необходимые нам объекты OleDbCommand:

tableAdapter_EditQueries2.gif

Читатель может подумать, что данный случай - исключение, но это не так. Если вы выберете такой способ создания слоя доступа к данным (Data Access Layer), то будьте готовы постоянно вмешиваться в автоматический процесс генерации SQL запросов.




Начало  Назад  Вперед