Пошаговое руководство. Добавление проверки данных в многоуровневое приложение
Проверка данных является процессом подтверждения того, что значения, введенные в объекты данных (например объект 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-уровневом наборе данных.