Сопоставление таблиц в адаптерах данных
Обновлен: Ноябрь 2007
Когда адаптер данных считывает данные из источника данных, он определяет место размещения данных в соответствующей таблице (или таблицах) набора данных с помощью технологии сопоставления таблиц. При сопоставлении имена столбцов связываются с именами в таблице набора данных. Например, сведения из столбца с именем au_id в источнике данных могут принадлежать столбцу author_id_number в таблице набора данных.
Примечание. |
---|
В предыдущей версии Visual Studio адаптеры данных использовались для связи между приложением и базой данных. Хотя адаптеры данных по-прежнему являются основным компонентом Поставщики данных .NET Framework (ADO.NET), создаваемые с помощью конструктора адаптеры таблиц упрощают процесс перемещения данных между приложением и базой данных. Дополнительные сведения по работе с адаптерами таблиц содержатся в разделе Общие сведения об адаптере таблиц. |
По умолчанию при использовании средств Visual Studio для создания набора данных из сведений, находящихся в источнике данных, имена элементов набора данных совпадают с именами элементов в источнике. Однако в некоторых случаях имена в источнике данных и наборе данных не совпадают.
Набор данных создан из существующей схемы, в которой используются другие имена.
Необходимо изменить имена элементов данных в наборе данных для удобства, удобочитаемости, перевода на другой язык или по иной причине.
В процессе генерации набора данных из адаптера возникла необходимость контролировать имена типизированных элементов.
Структура сопоставлений таблиц
Сопоставления таблиц устанавливаются с помощью свойства TableMappings адаптера, который представляет собой коллекцию элементов типа DataTableMapping. Для каждого набора сопоставляемых таблиц имеется один объект DataTableMapping. Обычно существует только один такой элемент, поскольку адаптеры обычно связаны только с одной исходной таблицей и одной таблицей набора данных. (Тем не менее, сохраненная процедура способна возвращать несколько наборов строк. В этом случае вторая и последующие таблицы сопоставляются с помощью второго и последующих сопоставлений в коллекции TableMappings.)
Каждый элемент сопоставления в свою очередь содержит свойства для идентификации таблицы источника данных, таблицы набора данных, а также свойство ColumnMappings, содержащее элементы, описывающие фактические сопоставления.
Сопоставление таблиц в действии
При вызове метода Fill адаптера данных адаптер выполняет следующий процесс для определения места для записи данных в наборе данных:
Адаптер ищет каждое имя исходного столбца в объекте TableMappings.
Когда он находит имя исходного столбца, он извлекает совпадающее (сопоставленное) имя для соответствующего столбца в таблице набора данных.
Используя имя, полученное на втором шаге, адаптер записывает данные из исходного столбца в соответствующий столбец набора данных.
Существуют некоторые условия, при которых описанный выше процесс не выполняется адаптером. Ниже представлены два основных условия.
Невозможно найти сопоставление для исходного столбца. Это происходит, если для свойства TableMappings ничего не определено, или если не сопоставлен конкретный столбец.
Записываемый столбец не определен в схеме набора данных, независимо от того, сопоставлен ли он в свойстве TableMappings.
Адаптер поддерживает два свойства, позволяющие указать, что должно происходить при возникновении любой из этих ситуаций. Данные ситуации не обязательно являются условиями ошибки, поскольку адаптер может продолжать заполнять набор данных даже в случае их возникновения.
Свойство MissingMappingAction позволяет указать действия адаптера, выполняемое, если сопоставление отсутствует. Имеются следующие параметры:
Passthrough — адаптер пытается загрузить столбец в столбец набора данных с тем же именем. Если столбец набора данных с совпадающим именем отсутствует, дальнейшее поведение зависит от настройки перечисления MissingSchemaAction (см. ниже).
Ignore — не сопоставленные надлежащим образом столбцы не загружаются в набор данных.
Error — выдается ошибка.
Свойство MissingSchemaAction позволяет указать, что должно происходить при попытке записи данных в столбец, который не определен адаптером в схеме набора данных. Доступны следующие значения:
Add — таблица или столбец добавляются в схему и в набор данных.
AddWithKey — таблица или столбец добавляется в набор данных и схему вместе со сведениями о первичном ключе.
Ignore — таблица или столбец, не представленные в схеме набора данных, не добавляются в набор данных.
Error — адаптер выдает ошибку.
В приложениях эти свойства обычно используются в сочетании, чтобы адаптировать приложение к конкретным потребностям. Например, задание для свойства MissingMappingAction значения Passthrough и для MissingSchemaAction значения Add вызывает эффект автоматического копирования имен таблиц и столбцов из источника в набор данных.
С другой стороны, имеется возможность задать проверку ошибки в тех приложениях, где схема набора данных точно определена. В этом случае получение данных из источника без ясно определенного конечного столбца в наборе данных может вызвать нарушение делового регламента или другую ошибку.
Ignore указывается, когда необходимо загружать в набор данных только те данные, которые точно определены в схеме или сопоставлены в свойстве TableMappings. Это удобно в случае, если адаптер вызывает сохраненную процедуру или инструкцию SQL, которая возвращает большее число столбцов, чем необходимо в наборе данных.
См. также
Задачи
Практическое руководство. Сопоставление столбцов источника данных со столбцами таблицы набора данных
Основные понятия
Знакомство с адаптерами данных
Заполнение DataSet из DataAdapter (ADO.NET)
Создание приложений для обработки данных с помощью Visual Studio
Ссылки
Диалоговое окно "Сопоставления таблиц"
Другие ресурсы
Объекты DataAdapter и DataReader (ADO.NET)
Создание адаптеров обработки данных