Пошаговое руководство. Добавление проверки данных в многоуровневое приложение
Обновлен: Ноябрь 2007
Проверка данных является процессом подтверждения того, что значения, введенные в объекты данных (например объект DataTable или классы LINQ to SQL), соответствуют ограничениям схемы объекта. Проверка также гарантирует совместимость с правилами, установленными для приложения. Проверка данных перед отправкой обновлений в основную базы данных рекомендуется, это уменьшает количество ошибок. Это также уменьшает потенциальное количество циклов передачи между приложением и базой данных.
Этот пример предоставляет пошаговые инструкции по добавлению проверок в многоуровневое приложение обработки данных (решение создано в разделе Пошаговое руководство. Создание многоуровневого приложения для работы с данными).
В этом пошаговом руководстве вы узнаете, как выполнить следующие задачи:
Автоматически создавать разделяемые классы с помощью Конструктор наборов данных.
Добавить код для проверки изменений значения в отдельном столбце.
Обязательные компоненты
Для выполнения данного пошагового руководства необходимо следующее:
Решение и связанные проекты, созданные в Пошаговое руководство. Создание многоуровневого приложения для работы с данными.
Доступ к примеру базы данных "Борей". Дополнительные сведения см. в разделе Практическое руководство. Установка образцов баз данных.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Открытие решения NTierWalkthrough
Чтобы открыть решение NTierWalkthrough:
В меню Файл выберите Открыть, нажмите кнопку Проект/решение и перейдите в папку, где находится файл NTierWalkthrough.sln.
Примечание. Файл NTierWalkthrough.SLN создается в разделе Пошаговое руководство. Создание многоуровневого приложения для работы с данными и является необходимым условием для выполнения этого пошагового руководства. Выполните процедуру, описанную в разделе Пошаговое руководство. Создание многоуровневого приложения для работы с данными, сохранив все проекты по окончании, если вы еще этого еще не сделали.
Добавление проверки для проверки данных во время изменения отдельных столбцов
Эта процедура добавит проверку, чтобы убедиться, что столбцу OrderDate в новом заказе присвоено значение текущей или более ранней даты. Требование этого приложения заключается в том, что столбец OrderDate не может содержать дату, более позднюю, чем текущая; будущие заказы не допускаются.
Чтобы добавить проверку значения, введенного в столбец OrderDate:
Откройте набор данных в Конструктор наборов данных, дважды щелкнув файл NorthwindDataSet.xsd в проекте DataAccessTier в Обозреватель решений.
Дважды щелкните столбец OrderDate таблицы Orders в конструкторе. В результате этого действия создается обработчик событий ColumnChanging.
Примечание. Конструктор наборов данных не создает обработчик событий для события C# автоматически. Код, необходимый для обработки события в C#, включается в эту процедуру позднее. Создается SampleColumnChangingEvent и затем подписывается на событие ColumnChanging в методе EndInit.
Добавьте код для проверки того, что e.ProposedValue для столбца OrderDate содержит текущую или более раннюю дату. Если предложенное значение не является допустимым, покажите, что столбец содержит ошибку.
В следующем примере кода выполняется проверка того, что столбец OrderDate содержит текущую или более раннюю дату. Если значение даты в OrderDate больше, чем текущая дата, столбцу OrderDate присваивается ошибка. Предложение Else удаляет ошибку, если OrderDate присвоена текущая или более ранняя дата.
Вставьте код Visual Basic в обработчик событий ColumnChanging. Вставьте код C# в OrdersDataTable объявление разделяемого класса.
If (e.Column.ColumnName = Me.OrderDateColumn.ColumnName) Then If CType(e.ProposedValue, DateTime) > Today Then e.Row.SetColumnError(e.Column, "OrderDate cannot be in the future") Else e.Row.SetColumnError(e.Column, "") End If End If
// Replace the NorthwindDataSet partial class with the following: public partial class NorthwindDataSet { partial class OrdersDataTable { public override void EndInit() { base.EndInit(); // Configure the ColumnChanging event // to call the SampleColumnChangingEvent method. ColumnChanging += SampleColumnChangingEvent; } public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e) { if (e.Column.ColumnName == OrderDateColumn.ColumnName) { if ((System.DateTime)e.ProposedValue > System.DateTime.Today) { e.Row.SetColumnError("OrderDate", " OrderDate cannot be in the future"); } else { e.Row.SetColumnError("OrderDate", ""); } } } } }
Чтобы проверить работу приложения
Чтобы протестировать приложение, измените значение столбца OrderDate на неверную дату.
Тестирование приложения
Нажмите клавишу F5.
Данные из таблиц Customers и Orders отображаются в форме.
В представлении DataGridView, содержащем заказы, измените значение в столбце OrderDate (любая запись) на завтрашнюю дату.
Уйдите с этой строки, чтобы принять изменение.
Проверка провалится, и значок ошибки отобразится в ячейке OrderDate, которая содержит недопустимое значение.
Наведите указатель мыши на значок ошибки, чтобы увидеть ее.
Закройте форму.
Следующие действия
В зависимости от требований приложения есть несколько шагов, которые, возможно, потребуется выполнить после добавления проверки. Например, может потребоваться сделать следующее расширение для данного приложения:
- Добавить проверку, которая проверяет изменения при изменении всей записи. Дополнительные сведения см. в разделе Практическое руководство. Добавление проверки в N-уровневом наборе данных.