MissingMappingAction

Свойство предоставляет или устанавливает реакцию объекта DbDataAdapter в ситуации, когда загружаемые таблицы (или столбцы) отсутствуют в коллекции TableMappings объекта DataSet.

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

Значение MissingMappingAction:

  • Passthrough (значение по умолчанию). Создается новый объект (столбец или таблица), который добавляется к DataSet с использованием исходного имени;

  • Ignore. Данные (столбец или таблица), для которых сопоставление отсутствует, игнорируются;

  • Error. Отсутствует сопоставление указанного столбца со значениями из коллекции TableMappings объекта DataSet.

Исключения
ArgumentException Устанавливаемое значение не является одним из значений MissingMappingAction.
InvalidOperationException Отсутствует возможность сопоставления загружаемых данных с данными из коллекции TableMappings объекта DataSet.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;

class MissingMappingActionSample
{
  static void Main()
  {
    // Создание фабрики классов провайдера
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    // Соединение с БД
    DbConnection con = factory.CreateConnection();
    con.ConnectionString =
      "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
    con.Open();
    // Создание таблицы БД
    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');";
    cmd.ExecuteNonQuery();
    // Создание объекта 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, rowtime from users";
    adapter.TableMappings.Add(mapping);
    adapter.MissingMappingAction = MissingMappingAction.Passthrough;
    // Заполнение объекта 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();
    }
    // Освобождение ресурсов
    con.Close();
  }
}

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

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