Пошаговое руководство. Добавление проверки в классы сущностей
Обновлен: November 2007
Проверка данных представляет собой процесс подтверждения того, что значения, вводимые в объекты данных, соответствуют ограничениям в схеме объекта, а также правилам, установленным для приложения. Проверка данных до отправки обновлений в основную базу данных является хорошей практикой, которая уменьшает вероятность появления ошибок, а также ожидаемое количество циклов обработки между приложением и базой данных.
Реляционный конструктор объектов обеспечивает частичные методы, которые дают возможность пользователям расширять сгенерированный проектировщиком код, который выполняется во время выполнения Вставок, Обновлений и Удалений из завершенных сущностей, а также во время и после отдельных изменений столбца.
Это пошаговое руководство обеспечивает информацию по добавлению проверки к классам сущностей LINQ to SQL и распространяются на Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов) topic.
В этой пошаговом руководстве вы узнаете, как выполнить следующие задачи:
Добавление проверки для изменений данных отдельного столбца.
Добавление проверки для обновлений в завершенную сущность.
Предварительные требования
Для выполнения данного пошагового руководства необходимо следующее:
Проект, созданный в Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов).
Доступ к примеру базы данных Northwind. Дополнительные сведения см. в разделе Практическое руководство. Установка образцов баз данных.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Открытие решения ORDesignerWalkthrough
Для открытия решения ORDesignerWalkthrough
В меню Файл выберите Открыть, нажмите кнопку Проект/решение и перейдите к расположению файла ORDesignerWalkthrough.sln.
Примечание. Файл ORDesignerWalkthrough .sln создан в разделе Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов) и необходим для выполнения данного пошагового руководства. Выполните процедуру, описанную в теме Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов), сохранив проект по окончании, если вы еще этого еще не сделали.
Добавление проверки для изменений данных в отдельном столбце
В этом разделе пошагового руководства вы добавите логику проверки в столбец RequiredDate заказа. Добавьте код, чтобы убедиться, что дата в столбце RequiredDate более ранняя, чем текущая дата. Поскольку проверка выполняется в фактическом определении класса (а не в интерфейсе пользователя), исключение отбрасывается, если значение не проходит проверку.
Для проверки данных при изменении значений столбца
Откройте файл Northwind.dbml в Сред. Объектно-реляционный конструктор. (Дважды щелкните по файлу Northwind.dbml вin Обозревателе решений.)
Поскольку вы добавляете проверку в столбец RequiredDate заказа, щелкните правой кнопкой мыши класс Order в конструкторе и щелкните Просмотр кода.
Открывается Редактор кода с частичным классом для заказа.
Поместите курсор в частичный класс Order.
Для проектов Visual Basic:
Разверните список Имя метода (поле со списком, которое говорит(Объявления)).
Щелкните OnRequiredDateChanging.
Метод OnRequiredDateChanging добавляется в разделяемый класс Order.
Добавьте следующий код в метод 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#:
Добавьте следующий код в разделяемый класс Order, чтобы гарантировать, что значение даты, введенное для столбца RequiredDate, представляет дату, не более раннюю, чем текущая дата:
partial void OnRequiredDateChanging(System.DateTime? value) { if (value < System.DateTime.Today) { throw new System.Exception("Required Date cannot be in the past"); } }
Тестирование приложения
Тестирование логики проверки требует запуска приложения и ввода значений, которые вызовут неудачную проверку.
Тестирование приложения
Нажмите клавишу F5.
В таблице, которая отображает заказы, измените дату заказа RequiredDate более ранней, чем текущая дата, и выйдите из записи, чтобы принять изменение.
Новое значение вызывает неудачную проверку, и исключение, как и предполагалось, отбрасывается.
Закройте форму. (Остановите отладку.)
Обработка ошибок проверки в DataGridView
Тестирование приложения привело к сообщению об ошибках от DataGridView, который инструктирует разработчиков обработать событие DataError. Следующая процедура показывает, как обработать событие.
Для обработки ошибки проверки в DataGridView
Откройте форму Form1 в редакторе кода.
Выберите OrdersDataGridView.
Создайте обработчик событий для события DataError.
Добавьте код для отображения ошибки. Обработчик события выглядит примерно так:
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); }
Добавление проверки для обновлений в класс сущностей.
В дополнение к проверке значений во время изменений можно проверить правильность данных, когда осуществляется попытка модифицировать завершенный класс сущностей. Проверка во время предпринятого обновления позволяет сравнить значения в нескольких столбцах, если бизнес- правила требуют этого. Например, следующие процедуры показывают, как проверить, что используется правильная транспортная компания, если стоимость перевозки грузов меньше, чем установленный предел.
Для добавления проверки во время обновления в классе сущностей
Откройте файл Northwind.dbml в Сред. Объектно-реляционный конструктор. (Дважды щелкните по файлу Northwind.dbml вin Обозревателе решений.)
Поскольку добавляется проверка к обновлению завершенного класса Order, разделяемые методы, к которым необходимо обратиться, находятся в сгенерированном классе DataContext (NorthwindDataContext). В реляционном конструкторе объектов щелкните правой кнопкой мыши по пустой области и выберите пункт Просмотр кода.
Открывается Редактор кода с разделяемым классом для NorthwindDataContext.
Поместите курсор в разделяемый класс NorthwindDataset.
Для проектов Visual Basic:
Разверните список Имя метода (поле со списком, которое говорит(Объявления)).
Щелкните UpdateOrder.
Метод UpdateOrder добавляется в разделяемый класс NorthwindDataContext.
Федеральная транспортная компания не осуществляет отгрузку если значение 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#:
Добавьте следующий код в разделяемый класс 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); } }
Тестирование приложения
Для тестирования логики проверки запустите приложение и введите значения, которые вызовут неудачную проверку.
Тестирование приложения
Нажмите клавишу F5.
В таблице, которая отображает заказы, найдите запись, для которой значение столбца ShipVia равно 3. Измените значение в столбце Freight на значение 5 и выйдите из записи, чтобы принять изменение.
Поскольку проверка не выполняется, пока запись фактически не представлена для обновления, проверка еще не терпит неудачу.
Нажмите кнопку Сохранить на форме.
В этой точке проверка обнаруживает ошибку и выдается исключение.
Закройте форму. (Остановите отладку.)
Следующие действия
В зависимости от требований приложения есть несколько шагов, которые возможно потребуется выполнить после добавления проверки в классы сущностей LINQ to SQL. Можно внести в приложение следующие усовершенствования:
- Создайте еще запросы LINQ для сортировки и фильтрации данных. Дополнительные сведения см. в разделе Запросы LINQ to SQL.
См. также
Задачи
Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)