Поделиться через


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

Обновлен: November 2007

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

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

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

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

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

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

Предварительные требования

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

Bb629301.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

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

  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 вin Обозревателе решений.)

  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 к SQL