TableMappings

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

При согласовании изменений объект DataAdapter применяет коллекцию DataTableMappingCollection для связи имен столбцов, использованных источником данных, с именами столбцов, использованных DataTable.

При изменении набора данных DataSet метод Fill должен первым делом определить, существует ли объект DataTable, в который надо будет размещать выборку данных, формируемую SelectCommand. Он делает это путем просмотра одновременно имен существующих таблиц и любой отображаемой объектом DbDataAdapter таблицы и столбца. По умолчанию, если таблица не существует в DataSet или нет таблицы с именем «Table», то создается новая таблица с именем «Table» и её столбцы создаются с использованием имен и типов данных из источника данных. Как альтернатива, имя этой таблицы может быть передано во втором аргументе метода Fill и она будет использована для размещения в ней результатов выборки данных. Если результатом команды является несколько выборок данных, то дополнительные таблицы именуются как «Table1» «Table2» и т.д.

Если метод Fill выявляет дубликаты имен столбцов, то они будут именоваться как «имя столбца»1, «имя столбца»2 и т.д. Не именованные столбцы (такие, как результат агрегатных функций) будут иметь имена «столбец1», «столбец2».

Если клиентское приложение не устраивает такое именование, то оно всегда может использовать явные имена для столбцов.

Когда используется режим перезаписи и передается объект DataTable, то метод Fill сначала просматривает отображение таблицы, и если она не найдена, просто добавляет таблицу независимо от её имени. Свойства MissingSchemaAction и MissingMappingAction оказывают влияние на этот процесс. Конечным результатом является то, что данные могут быть добавлены в DataSet или DataTable без отображения любой таблицы или столбца, независимо от того, какие таблицы или столбцы уже существуют.

Декларация
public DataTableMappingCollection TableMappings {get;};
Значение свойства

Коллекция, обеспечивающая основное сопоставление между возвращенными записями и записями в объекте DataSet.

По умолчанию используется пустая коллекция.

Исключения

Отсутствуют.

Пример
// C#
using System;
using System.Data;
using System.Data.Common;

class TableMappingsSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString =
      "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
    // Создание таблицы БД
    DbCommand cmd = factory.CreateCommand();
    cmd.Connection = con;
    cmd.CommandText =
      "create or replace table users ( " +
      "id integer primary key, name varchar(70));" +
      "insert into users (id, name) values (0, 'Пользователь A');" +
      "insert into users (id, name) values (1, 'Пользователь B');";
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    // Создание объекта DataSet
    DataSet ds = new DataSet();
    DataTable users = ds.Tables.Add("Пользователи");
    users.Columns.Add("Номер", typeof(int));
    users.Columns.Add("Имя пользователя", typeof(string));
    // Отображение столбцов таблицы DataTable на поля БД
    DataTableMapping mapping = new DataTableMapping("Table", "Пользователи");
    mapping.ColumnMappings.Add("ID", "Номер");
    mapping.ColumnMappings.Add("NAME", "Имя пользователя");
    // Создание объекта DbDataAdapter
    DbDataAdapter adapter = factory.CreateDataAdapter();
    adapter.SelectCommand = factory.CreateCommand();
    adapter.SelectCommand.Connection = con;
    adapter.SelectCommand.CommandText =
      "select id, name from users";
    adapter.TableMappings.Add(mapping);
    // Заполнение объекта DataSet данными из таблицы БД
    adapter.Fill(ds);
    // Отображение столбцов таблицы
    Console.WriteLine("Столбцы таблицы:");
    foreach (DataColumn column in users.Columns)
    {
      Console.Write("{0} | ", column.ColumnName);
    }
    Console.WriteLine();
    // Отображение строк таблицы
    Console.WriteLine("Строки таблицы:");
    foreach (DataRow row in users.Rows)
    {
      foreach (DataColumn column in users.Columns)
      {
        Console.Write("{0} | ", row[column.ColumnName]);
      }
      Console.WriteLine();
    }
  }
}

Результат выполнения примера:

Столбцы таблицы:
Номер | Имя пользователя |
Строки таблицы:
0 | Пользователь A |
1 | Пользователь B |