Поделиться через


Создание и настройка TableAdapters в приложениях .NET Framework

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

TableAdapters обеспечивают обмен данными между приложением и базой данных. Они подключаются к базе данных, выполняют запросы или хранимые процедуры, а также возвращают новую таблицу данных или заполняют существующий DataTable экземпляр класса возвращаемыми данными. TableAdapters также может отправлять обновленные данные из приложения обратно в базу данных.

TableAdapters создаются при выполнении одного из следующих действий:

  • Перетащите объекты базы данных из обозревателя серверов в конструктор наборов данных.

  • Перетащите TableAdapter объект из панели элементов в пустую область в области конструктора наборов данных и настройте источник данных.

  • Запустите мастер настройки источника данных и выберите тип источника данных базы данных или веб-службы :

    Снимок экрана: выбор типа источника данных в мастере настройки источника данных в Visual Studio.

Общие сведения о TableAdapters см. в разделе "Заполнение наборов данных" с помощью TableAdapters.

Предпосылки

Для выполнения процедур, описанных в этой статье, необходимо выполнить следующие предварительные требования:

Замечание

Инструкции в этой статье иллюстрируют последнюю версию интерактивного интерфейса разработки (IDE), доступную в Visual Studio. На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса. Вы можете использовать другую версию Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.

Доступ к мастеру настройки TableAdapter

Мастер настройки TableAdapter можно использовать для создания новых таблиц TableAdapters или изменения существующих экземпляров и настройки связанных с ними таблиц данных.

  • Чтобы настроить существующий TableAdapter с помощью мастера, щелкните правой кнопкой мыши экземпляр TableAdapter в конструкторе наборов данных и выберите "Настроить".

    Снимок экрана, на котором показано, как получить доступ к мастеру настройки адаптера таблиц в Visual Studio.

  • Чтобы создать новый TableAdapter с помощью мастера, перетащите объект TableAdapter из Панели элементов в пустую область на поверхности Конструктора набора данных.

Использование мастера

Для конфигурации TableAdapter мастер настройки TableAdapter поможет вам выполнить следующие задачи:

  1. Настройте необходимые параметры для TableAdapter.

    • Укажите тип источника данных для подключения TableAdapter.

    • Определите команды, используемые для взаимодействия с базой данных, инструкции SQL или хранимые процедуры. Если TableAdapter уже связан с источником данных, этот параметр не отображается в мастере.

  2. При необходимости создайте хранимые процедуры.

    Создайте новую хранимую процедуру в базовой базе данных, если у вас есть соответствующие разрешения на базе данных. Если у вас нет необходимых разрешений, этот параметр недоступен в мастере.

  3. При необходимости выполните существующие хранимые процедуры.

    Процедуры доступны для команд SELECT, INSERT, UPDATE и DELETE TableAdapter. Например, хранимая процедура, назначенная команде UPDATE , выполняется при вызове TableAdapter.Update() метода.

  4. Сопоставлять параметры из выбранной хранимой процедуры с соответствующими столбцами в таблице данных. Например, если хранимая процедура принимает параметр с именем @CompanyName, который передается в столбец CompanyName в таблице данных, задайте параметру @CompanyName исходный столбец как CompanyName.

    Замечание

    Для команды SELECT хранимая процедура выполняется при вызове метода TableAdapter Fill по умолчанию. Вы указываете имя метода Fill() на следующей странице мастера. При использовании метода по умолчанию типичный код для выполнения хранимой процедуры для команды SELECT.TableAdapter.Fill(<TableName>) Вы заменяете <TableName> часть именем таблицы данных.

    При изменении имени метода по умолчанию Fill необходимо обновить код процедуры. Замените Fill новым именем метода и используйте фактическое имя TableAdapter. Например, для TableAdapter с именем CustomersTableAdapter и таблицы данных с именем CustomersTable, если изменить имя метода Fill на AddData, измените код на CustomersTableAdapter.AddData(CustomersTable).

    • Выберите, следует ли включить параметр Create методы для отправки обновлений непосредственно в базу данных. Если этот параметр включен, это эквивалентно настройке GenerateDBDirectMethods свойства true. Этот параметр недоступен, если исходная инструкция SQL не предоставляет достаточно сведений или запрос не является обновляемым запросом. Например, когда запросы JOIN и другие запросы возвращают одно (скалярное) значение.
  5. Настройте параметры Расширенных настроек.

    • Создайте команды INSERT, UPDATE и DELETE на основе команды SELECT , определенной на странице создания инструкций SQL .

    • Используйте оптимистическую согласованность.

    • Обновите таблицу данных после выполнения команд INSERT и UPDATE .

Настройка метода TableAdapter.Fill()

В некоторых сценариях может потребоваться изменить схему таблицы данных TableAdapter. Чтобы завершить действие, необходимо изменить основной Fill метод TableAdapter. TableAdapters создаются с основным методом Fill, который определяет схему связанной таблицы данных. Основной Fill метод основан на запросе или хранимой процедуре, введенной при первоначальной настройке TableAdapter. Это первый (самый верхний) метод в таблице данных в конструкторе наборов данных.

Схема, демонстрирующая использование TableAdapter с несколькими запросами.

Все изменения, внесенные в основной Fill метод TableAdapter, отражаются в схеме связанной таблицы данных. Например, удаление столбца из запроса в основном Fill методе также удаляет столбец из связанной таблицы данных. Кроме того, удаление столбца из метода main Fill удаляет столбец из любых дополнительных запросов для этого TableAdapter.

Мастер настройки запросов TableAdapter можно использовать для создания и изменения дополнительных запросов для TableAdapter. Эти дополнительные запросы должны соответствовать схеме таблицы, если они не возвращают скалярное значение. Каждый дополнительный запрос имеет указанное имя.

В следующем примере показано, как вызвать дополнительный запрос с именем FillByCity:

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

Создание запроса с помощью мастера

Вы можете создать новый запрос с помощью мастера настройки запросов TableAdapter , выполнив следующие действия.

  1. Откройте набор данных в конструкторе наборов данных .

  2. Создайте новый запрос с помощью одного из следующих действий:

    • В конструкторе наборов данных щелкните правой кнопкой мыши tableAdapter и выберите "Добавить запрос".
    • Перетащите Query объект с вкладки DataSetПанели инструментовDataTable в область конструктора наборов данных.
    • Перетащите Query объект из панели инструментов в пустую область на поверхности конструктора наборов данных. Это создаёт TableAdapter без связанного DataTable.

    Эти запросы могут возвращать только одномасштабные значения или запускать команды UPDATE, INSERT или DELETE в базе данных.

  3. На экране выбора подключения к данным выберите существующее подключение или создайте новое подключение для запроса.

    Замечание

    Этот экран отображается только в том случае, если конструктор не может определить используемое подключение или если нет доступных подключений.

  4. На экране выбора типа команд настройте команду, выбрав следующие методы, которые извлекает данные из базы данных:

    • Используйте инструкции SQL: вы вводите инструкцию SQL, чтобы выбрать данные из базы данных.

    • Создайте хранимую процедуру: мастер создает новую хранимую процедуру (в базе данных) на основе указанной команды SELECT .

    • Используйте существующие хранимые процедуры: при выполнении запроса выполняется существующая хранимая процедура.

Настройка запроса с помощью мастера

Чтобы изменить существующий запрос TableAdapter с помощью мастера настройки запросов TableAdapter, щелкните правой кнопкой мыши запрос и выберите "Настроить". Действие правой кнопкой мыши создает другой результат в зависимости от типа выбранного запроса:

  • Для основного запроса TableAdapter выполняется перенастройка как самого TableAdapter, так и схемы DataTable.

  • При дополнительном запросе в TableAdapter перенастраивается только выбранный запрос.

Мастер настройки TableAdapter перенастраивает определение TableAdapter, а мастер настройки запросов TableAdapter перенастраивает только выбранный запрос.

Добавление глобального запроса в TableAdapter

Глобальные запросы — это SQL-запросы, возвращающие одно (скалярное) значение или нет значения. Как правило, глобальные функции выполняют такие операции базы данных, как вставки, обновления и удаления. Они также агрегируют информацию, например количество клиентов в таблице или общую плату за все элементы в определенном заказе.

  1. Добавьте глобальный запрос, перетащив Query объект с вкладки DataSetпанели элементов в пустую область в области конструктора наборов данных .

  2. Введите запрос, выполняющий определенную задачу, например SELECT COUNT(*) AS CustomerCount FROM Customers.

    Замечание

    Перетаскивание Query объекта непосредственно на поверхность конструктора наборов данных создает метод, который возвращает только скалярное (одно) значение. Хотя выбранная вами процедура запроса или хранимой процедуры может возвращать несколько значений, метод, созданный мастером, возвращает только одно значение. Например, запрос может возвращать первый столбец первой строки возвращаемых данных.