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

Примечание.

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

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

Средства LINQ to SQL в Visual Studio предоставляют частичные методы, позволяющие пользователям расширить созданный конструктором код, который выполняется во время вставок, Обновления и удаления полных сущностей, а также во время и после изменения отдельных столбцов.

Примечание.

В этом разделе приведены основные шаги по добавлению проверки в классы сущностей с помощью конструктора O/R. Так как выполнить эти универсальные действия может быть трудно без ссылки на определенный класс сущностей, пошаговое руководство, использующее фактические данные, предоставляется.

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

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

Примечание.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в этой статье. Возможно, вы используете другой выпуск Visual Studio или разные параметры среды. Дополнительные сведения см. в разделе Персонализация среды IDE.

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

  1. Откройте или создайте файл классов SQL LINQ to SQL (.dbmlфайл) в конструкторе O/R. (Дважды щелкните .dbml файл в Обозреватель решений.)

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

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

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

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

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

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

    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#:

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

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

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

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

Примечание.

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

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

  1. Откройте или создайте файл классов SQL LINQ to SQL (.dbmlфайл) в конструкторе O/R. (Дважды щелкните .dbml файл в Обозреватель решений.)

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

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

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

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

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

    2. Нажмите UpdateENTITYCLASSNAME.

    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#:

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

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