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 |