Создание и настройка TableAdapters в приложениях платформа .NET Framework
Примечание.
Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.
TableAdapters обеспечивают связь между приложением и базой данных. Они подключаются к базе данных, выполняют запросы или хранимые процедуры, а также возвращают новую таблицу данных или заполняют существующую DataTable возвращаемыми данными. TableAdapters также может отправлять обновленные данные из приложения обратно в базу данных.
TableAdapters создаются для вас при выполнении одного из следующих действий:
Перетащите объекты базы данных из обозревателя серверов в конструктор наборов данных.
Запустите мастер настройки источника данных и выберите тип источника данных базы данных или веб-службы .
Вы также можете создать таблицу TableAdapter и настроить ее с источником данных, перетащив TableAdapter из панели элементов в пустую область в области конструктора наборов данных.
Общие сведения о TableAdapters см. в разделе "Заполнение наборов данных" с помощью TableAdapters.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.
Использование мастера настройки TableAdapter
Запустите мастер настройки TableAdapter, чтобы создать или изменить tableAdapters и связанные с ними таблицы. Вы можете настроить существующий TableAdapter, щелкнув его правой кнопкой мыши в конструкторе наборов данных.
Если вы перетащите новый TableAdapter из панели элементов, когда конструктор наборов данных находится в фокусе, мастер запускает и предложит указать источник данных, к которому должен подключаться TableAdapter. На следующей странице мастер спрашивает, какие команды следует использовать для взаимодействия с базой данных, инструкции SQL или хранимые процедуры. (Этот экран не отображается, если вы настраиваете TableAdapter, который уже связан с источником данных.)
Вы можете создать новую хранимую процедуру в базовой базе данных, если у вас есть правильные разрешения для базы данных. Если у вас нет этих разрешений, этот параметр недоступен.
Вы также можете выполнить существующие хранимые процедуры для команд SELECT, INSERT, UPDATE и DELETE таблицыAdapter. Хранимая процедура, назначенная команде Update , например, выполняется при вызове
TableAdapter.Update()
метода.
Сопоставьте параметры из выбранной хранимой процедуры с соответствующими столбцами в таблице данных. Например, если хранимая процедура принимает параметр с именем @CompanyName
, который он передает в CompanyName
столбец в таблице, задайте для исходного столбца @CompanyName
параметра CompanyName
значение .
Примечание.
Хранимая процедура, назначенная SELECT
команде, выполняется путем вызова метода TableAdapter, который вы назовете на следующем шаге мастера. Метод по умолчанию — это Fill
код, который обычно используется для выполнения SELECT
процедуры TableAdapter.Fill(tableName)
. Если изменить имя Fill
по умолчанию, замените Fill
назначенным именем и замените TableAdapter фактическим именем TableAdapter (например, CustomersTableAdapter
).
- Выбор методов create для отправки обновлений непосредственно в параметр базы данных эквивалентен настройке
GenerateDBDirectMethods
свойства true. Параметр недоступен, если исходная инструкция SQL не предоставляет достаточно сведений или запрос не является обновляемым запросом. Такая ситуация может возникать, например, в запросах и запросах JOIN , возвращающих одно скалярное значение.
Дополнительные параметры в мастере позволяют:
- Создание
INSERT
инструкций иDELETE
UPDATE
инструкций наSELECT
основе инструкции, определенной на странице "Создание инструкций SQL" - Использовать оптимистическую блокировку
- Укажите, следует ли обновлять таблицу данных после
INSERT
выполнения инструкций.UPDATE
Настройка метода Fill TableAdapter
Иногда может потребоваться изменить схему таблицы TableAdapter. Для этого необходимо изменить основной Fill
метод TableAdapter. TableAdapters создаются с основным Fill
методом, определяющим схему связанной таблицы данных. Основной Fill
метод основан на запросе или хранимой процедуре, введенной при первоначальной настройке TableAdapter. Это первый (самый верхний) метод в таблице данных в конструкторе наборов данных.
Все изменения, внесенные в основной Fill
метод TableAdapter, отражаются в схеме связанной таблицы данных. Например, удаление столбца из запроса в основном Fill
методе также удаляет столбец из связанной таблицы данных. Кроме того, удаление столбца из основного Fill
метода удаляет столбец из любых дополнительных запросов для этого TableAdapter.
Мастер настройки запросов TableAdapter можно использовать для создания и изменения дополнительных запросов для TableAdapter. Эти дополнительные запросы должны соответствовать схеме таблицы, если они не возвращают скалярное значение. Каждый дополнительный запрос имеет указанное имя.
В следующем примере показано, как вызвать дополнительный запрос с именем FillByCity
:
CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")
Запуск мастера настройки запросов TableAdapter с новым запросом
Откройте свой набор данных в Конструкторе наборов данных.
Если вы создаете новый запрос, перетащите объект запроса на вкладку DataSet панели элементов DataTableили выберите "Добавить запрос" в контекстном меню TableAdapter. Можно также перетащить объект query в пустую область конструктора наборов данных, которая создает tableAdapter без связанного DataTableобъекта. Эти запросы могут возвращать только одно (скалярные) значения или выполнять
UPDATE
INSERT
DELETE
команды в базе данных.На экране выбора подключения к данным выберите или создайте подключение, которое будет использоваться запросом.
Примечание.
Этот экран отображается только в том случае, если конструктор не может определить правильное подключение, используемое или если нет доступных подключений.
На экране "Выбор типа команды" выберите из следующих методов получения данных из базы данных:
Использование инструкций SQL позволяет вводить инструкцию SQL для выбора данных из базы данных.
Создание новой хранимой процедуры позволяет мастеру создать новую хранимую процедуру (в базе данных) на основе указанной
SELECT
инструкции.Использование существующих хранимых процедур позволяет выполнять существующую хранимую процедуру при выполнении запроса.
Запуск мастера настройки запросов TableAdapter в существующем запросе
Если вы редактировать существующий запрос TableAdapter, щелкните его правой кнопкой мыши и выберите команду "Настроить " в контекстном меню.
Примечание.
Щелкнув правой кнопкой мыши основной запрос TableAdapter, перенастройка tableAdapter и DataTable схемы. Щелкнув правой кнопкой мыши дополнительный запрос в TableAdapter, настраивает только выбранный запрос. Мастер настройки TableAdapter перенастраивает определение TableAdapter, а мастер настройки запросов TableAdapter перенастройки только выбранного запроса.
Добавление глобального запроса в TableAdapter
Глобальные запросы — это SQL-запросы, возвращающие одно (скалярное) значение или нет значения. Как правило, глобальные функции выполняют такие операции базы данных, как вставки, обновления и удаления. Они также агрегируют информацию, например количество клиентов в таблице или общую плату за все элементы в определенном заказе.
Глобальные запросы добавляются путем перетаскивания объекта query из вкладки DataSet панели элементов в пустую область конструктора наборов данных.
Укажите запрос, выполняющий нужную задачу, например
SELECT COUNT(*) AS CustomerCount FROM Customers
.Примечание.
Перетаскивание объекта query непосредственно в конструктор наборов данных создает метод, который возвращает только скалярное (одно) значение. Хотя выбранная вами процедура запроса или хранимой процедуры может возвращать более одного значения, метод, созданный мастером, возвращает только одно значение. Например, запрос может возвращать первый столбец первой строки возвращаемых данных.