Технология Microsoft ADO.NET

       

Свойство MissingMappingAction


В рассмотренных выше примерах мы определяли названия полей в объекте DataSet для всех заголовков таблицы, извлекаемой из базы данных. Таблица в базе данных может измениться, например, в нее будут добавлены столбцы, которых нет в свойстве TableMappings. Что произойдет в этом случае? Объект DataAdapter имеет свойство MissingMappingAction, предназначенное для таких ситуаций. Его значение по умолчанию - Passthrough (рис. 12.10).


Рис. 12.10.  Свойство MissingMappingAction объекта DataAdapter в приложении VisualTableMappings

Для того чтобы разобраться с этим свойством, откроем приложение ProgrammTableMappings, закомментируем пару столбцов в определении TableMappings и добавим программно свойство MissingMappingAction:

... DataColumnMapping[] dcMappings = { new DataColumnMapping("CustomerID", "Номер_клиента"), //new DataColumnMapping("CompanyName", "Компания"), //new DataColumnMapping("ContactName", "Имя"), new DataColumnMapping("ContactTitle", "Должность"), new DataColumnMapping("Address", "Адрес"), new DataColumnMapping("City", "Город"), new DataColumnMapping("Region", "Регион"), new DataColumnMapping("PostalCode", "Индекс"), new DataColumnMapping("Country", "Страна"), new DataColumnMapping("Phone", "Телефон"), new DataColumnMapping("Fax", "Факс"), };

dtMapping.ColumnMappings.AddRange(dcMappings); dataAdapter.TableMappings.Add(dtMapping);

dataAdapter.MissingMappingAction = MissingMappingAction.Passthrough; ...

Запускаем приложение. Мы убрали столбцы "Компания" и "Имя" - при значении по умолчанию Passthrough свойства MissingMappingAction в DataSet помещаются поля с их оригинальными названиями (рис. 12.11):


Рис. 12.11.  Вид таблицы при значении Passthrough свойства Missing MappingAction

Изменим значение на Ignore:

dataAdapter.MissingMappingAction = MissingMappingAction.Ignore;

В результате будут игнорироваться столбцы, не указанные в свойстве TableMappings (рис. 12.12):


Рис. 12.12.  Вид таблицы при значении Ignore свойства Missing MappingAction

Последнее значение Error:

dataAdapter.MissingMappingAction = MissingMappingAction.Error;

В этом случае сгенерируется исключение, которое может быть перехвачено блоком обработки.



Содержание раздела