Как добавить проверку в классы сущностей

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

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

Примечание

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

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

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

Примечание

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

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

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

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

    Открывается Редактор кода с разделяемым классом для выбранного класса сущностей.

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

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

    1. Разверните список Имя метода list.

    2. Найдите OnCOLUMNNAME метод Изменение для столбца, в который вы хотите добавить проверку.

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

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

      If value.HasValue Then
          ' Add code to ensure that the value is acceptable.
          ' If value < 1 Then
          '    Throw New Exception("Invalid data!")
          ' End If
      End If
      

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

    1. Поскольку проекты C# автоматически не генерируют обработчики событий, то можно использовать IntelliSense для создания изменяющие столбец разделяемые методы.

      Введите partial и потом пространство для доступа к списку доступных разделяемых методов. Щелкните изменяющий метод для столбца, для которого вы хотите добавить проверку. Следующий код напоминает код, который генерируется, когда выбирается изменяющий столбец разделяемый метод:

      partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value)
          {
             throw new System.NotImplementedException();
          }
      

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

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

Примечание

Код проверки для обновлений в полных классах сущностей выполняется в разделяемом классе DataContext, а не в разделяемом классе заданного класса сущности.

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

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

  2. В реляционном конструкторе объектов щелкните правой кнопкой мыши по пустой области и выберите пункт Просмотр кода.

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

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

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

    1. Разверните список Имя метода list.

    2. Нажмите кнопку ОбновитьENTITYCLASSNAME.

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

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

      If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then
          Dim ErrorMessage As String = "Invalid data!"
          Throw New Exception(ErrorMessage)
      End If
      

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

    1. Поскольку проекты C# автоматически не генерируют обработчики событий, то можно использовать IntelliSense для создания изменяющего столбец разделяемого метода UpdateCLASSNAME.

    2. Введите partial и потом пространство для доступа к списку доступных разделяемых методов. Щелкните метод обновления для класса, для которого вы хотите добавить проверку. Следующий код напоминает код, который генерируется, когда выбирается разделяемый метод: UpdateCLASSNAME:

      partial void UpdateCLASSNAME(CLASSNAME instance)
      {
          if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y))
          {
              string ErrorMessage = "Invalid data!";
              throw new System.Exception(ErrorMessage);
          }
      }
      

См. также

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

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

LINQ to SQL

Проверка данных