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 |