Пошаговое руководство. Добавление проверки данных в многоуровневое приложение

Проверка данных является процессом подтверждения того, что значения, введенные в объекты данных (например объект DataTable или классы LINQ to SQL), соответствуют ограничениям схемы объекта. Проверка также гарантирует совместимость с правилами, установленными для приложения. Проверка данных перед отправкой обновлений в основную базы данных рекомендуется, это уменьшает количество ошибок. Это также уменьшает потенциальное количество циклов передачи между приложением и базой данных.

Этот пример предоставляет пошаговые инструкции по добавлению проверок в многоуровневое приложение обработки данных (решение создано в разделе Пошаговое руководство. Создание многоуровневого приложения для работы с данными).

В этом пошаговом руководстве вы узнаете, как выполнить следующие задачи:

Обязательные компоненты

Для выполнения данного пошагового руководства необходимо следующее.

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Customizing Development Settings in Visual Studio.

Открытие решения NTierWalkthrough

Чтобы открыть решение NTierWalkthrough:

Добавление проверки для проверки данных во время изменения отдельных столбцов

Эта процедура добавит проверку, чтобы убедиться, что столбцу OrderDate в новом заказе присвоено значение текущей или более ранней даты. Требование этого приложения заключается в том, что столбец OrderDate не может содержать дату, более позднюю, чем текущая; будущие заказы не допускаются.

Чтобы добавить проверку значения, введенного в столбец OrderDate:

  1. Откройте набор данных в Создание и изменение типизированных наборов данных, дважды щелкнув файл NorthwindDataSet.xsd проекта DataAccessTier в обозревателе решений.

  2. Дважды щелкните столбец OrderDate таблицы Orders в конструкторе. В результате этого действия создается обработчик событий ColumnChanging.

    Примечание

    Конструктор наборов данных не создает обработчик событий для события C# автоматически.Код, необходимый для обработки события в C#, приведен далее в этой процедуре.SampleColumnChangingEvent создается и подписывается на событие ColumnChanging в методе EndInit.

  3. Добавьте код для проверки того, что 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 на неверную дату.

Тестирование приложения

  1. Нажмите клавишу F5.

  2. Данные из таблиц Customers и Orders отображаются в форме.

  3. В представлении DataGridView, содержащем заказы, измените значение в столбце OrderDate (любая запись) на завтрашнюю дату.

  4. Уйдите с этой строки, чтобы принять изменение.

    Проверка провалится, и значок ошибки отобразится в ячейке OrderDate, которая содержит недопустимое значение.

  5. Наведите указатель мыши на значок ошибки, чтобы увидеть ее.

  6. Закройте форму.

Следующие действия

В зависимости от требований приложения есть несколько шагов, которые, возможно, потребуется выполнить после добавления проверки. Например, может потребоваться сделать следующее расширение для данного приложения:

См. также

Другие ресурсы

Работа с наборами данных в N-уровневых приложениях

Иерархическое обновление

Доступ к данным в Visual Studio