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

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

Реляционный конструктор объектов обеспечивает частичные методы, которые дают возможность пользователям расширять сгенерированный проектировщиком код, который выполняется во время выполнения Вставок, Обновлений и Удалений из завершенных сущностей, а также во время и после отдельных изменений столбца.

Это пошаговое руководство обеспечивает информацию по добавлению проверки к классам сущностей LINQ to SQL и распространяются на Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов) topic.

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

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

  • Добавление проверки для обновлений в завершенную сущность.

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

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

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

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

Для открытия решения ORDesignerWalkthrough

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

В этом разделе пошагового руководства вы добавите логику проверки в столбец RequiredDate заказа. Добавьте код, чтобы убедиться, что дата в столбце RequiredDate более ранняя, чем текущая дата. Поскольку проверка выполняется в фактическом определении класса (а не в интерфейсе пользователя), исключение отбрасывается, если значение не проходит проверку.

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

  1. Откройте файл Northwind.dbml в Реляционный конструктор объектов. (Дважды щелкните по файлу Northwind.dbml в Обозревателе решений.)

  2. Поскольку вы добавляете проверку в столбец RequiredDate заказа, щелкните правой кнопкой мыши класс Order в конструкторе и щелкните Просмотр кода.

    Открывается Редактор кода с частичным классом для заказа.

  3. Поместите курсор в частичный класс Order.

  4. Для проектов Visual Basic:

    1. Разверните список Имя метода (поле со списком, которое говорит**(Объявления)**).

    2. Щелкните OnRequiredDateChanging.

    3. Метод OnRequiredDateChanging добавляется в разделяемый класс Order.

    4. Добавьте следующий код в метод OnRequiredDataChanging, чтобы гарантировать, что значение даты, введенное для столбца RequiredDate, представляет дату, не более раннюю, чем текущая дата:

      If value.HasValue Then
          If value < Today Then
              Throw New Exception("Required Date cannot be in the past")
          End If
      End If
      

    Для проектов C#:

    1. Добавьте следующий код в разделяемый класс Order, чтобы гарантировать, что значение даты, введенное для столбца RequiredDate, представляет дату, не более раннюю, чем текущая дата:

      partial void OnRequiredDateChanging(System.DateTime? value)
      {
          if (value < System.DateTime.Today)
          {
              throw new System.Exception("Required Date cannot be in the past");
          }
      }
      

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

Тестирование логики проверки требует запуска приложения и ввода значений, которые вызовут неудачную проверку.

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

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

  2. В таблице, которая отображает заказы, измените дату заказа RequiredDate более ранней, чем текущая дата, и выйдите из записи, чтобы принять изменение.

    Новое значение вызывает неудачную проверку, и исключение, как и предполагалось, отбрасывается.

  3. Закройте форму. (Остановите отладку.)

Обработка ошибок проверки в DataGridView

Тестирование приложения привело к сообщению об ошибках от DataGridView, который инструктирует разработчиков обработать событие DataError. Следующая процедура показывает, как обработать событие.

Для обработки ошибки проверки в DataGridView

  1. Откройте форму Form1 в редакторе кода.

  2. Выберите OrdersDataGridView.

  3. Создайте обработчик событий для события DataError.

  4. Добавьте код для отображения ошибки. Обработчик события выглядит примерно так.

    Private Sub OrdersDataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles OrdersDataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub
    
    private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
    {
        MessageBox.Show(e.Exception.Message);
    }
    

Добавление проверки для обновлений в класс сущностей.

В дополнение к проверке значений во время изменений можно проверить правильность данных, когда осуществляется попытка модифицировать завершенный класс сущностей. Проверка во время предпринятого обновления позволяет сравнить значения в нескольких столбцах, если бизнес- правила требуют этого. Например, следующие процедуры показывают, как проверить, что используется правильная транспортная компания, если стоимость перевозки грузов меньше, чем установленный предел.

Для добавления проверки во время обновления в классе сущностей

  1. Откройте файл Northwind.dbml в Реляционный конструктор объектов. (Дважды щелкните по файлу Northwind.dbml в Обозревателе решений.)

  2. Поскольку добавляется проверка к обновлению завершенного класса Order, разделяемые методы, к которым необходимо обратиться, находятся в сгенерированном классе DataContext (NorthwindDataContext). В реляционном конструкторе объектов щелкните правой кнопкой мыши по пустой области и выберите пункт Просмотр кода.

    Открывается Редактор кода с разделяемым классом для NorthwindDataContext.

  3. Поместите курсор в разделяемый класс NorthwindDataset.

  4. Для проектов Visual Basic:

    1. Разверните список Имя метода (поле со списком, которое говорит**(Объявления)**).

    2. Щелкните UpdateOrder.

    3. Метод UpdateOrder добавляется в разделяемый класс NorthwindDataContext.

    4. Федеральная транспортная компания не осуществляет отгрузку, если значение Freight меньше 10. Поэтому добавьте следующий код в метод UpdateOrder, чтобы гарантировать, что введенное значение для ShipVia — это не Федеральная транспортная компания, если значение Freight меньше 10:

      If (instance.ShipVia = 3) And (instance.Freight < 10) Then
          Dim ErrorMessage As String = "Federal Shipping " & _
           "does not deliver for less than 10. " & _
           "You must use a different shipper."
          Throw New Exception(ErrorMessage)
      End If
      

    Для проектов C#:

    1. Добавьте следующий код в разделяемый класс NorthwindDataContext, чтобы гарантировать, что введенное значение для ShipVia это не Федеральная транспортная компания, если значение Freight меньше 10:

      partial void UpdateOrder(Order instance)
      {
          if ((instance.ShipVia == 3) && (instance.Freight < 10))
          {
              string ErrorMessage = "Federal Shipping " +
                  "does not deliver for less than 10. " +
                  "You must use a different shipper.";
              throw new System.Exception(ErrorMessage);
          }
      }
      

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

Для тестирования логики проверки запустите приложение и введите значения, которые вызовут неудачную проверку.

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

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

  2. В таблице, которая отображает заказы, найдите запись, для которой значение столбца ShipVia равно 3. Измените значение в столбце Freight на значение 5 и выйдите из записи, чтобы принять изменение.

    Поскольку проверка не выполняется, пока запись фактически не представлена для обновления, проверка еще не терпит неудачу.

  3. Нажмите кнопку Сохранить на форме.

    В этой точке проверка обнаруживает ошибку и выдается исключение.

  4. Закройте форму. (Остановите отладку.)

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

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

  • Создайте еще запросы LINQ для сортировки и фильтрации данных. Дополнительные сведения см. в разделе Запросы LINQ to SQL.

См. также

Задачи

Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)

Основные понятия

Новые возможности разработки приложений для работы с данными

Запросы LINQ to SQL

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

Реляционный конструктор объектов

LINQ to SQL

LINQ to SQL Walkthroughs