Иллюстрированный самоучитель по Architecture .NET

Изменение объекта DataRow

При необходимости внести значительные изменения в объект DataSet (Набор данных) и отложить при этом проверку ограничений и событий, можно использовать режим редактирования набора данных.

BeginEdit.
EndEdit,
CancelEdit

Переход в режим редактирования осуществляется вызовом метода BeginEdit объекта строки, которую необходимо изменить. Для выхода из этого режима используются методы EndEdit и CancelEdit.

В примере DataEditing мы нарушаем ограничение, заданное внешним ключом, добавляя в таблицу Books (Книги) строку, описывающую книгу автора, идентификатор которого отсутствует в базе данных. Исключение, являющееся результатом этого нарушения, возникнет только после вызова метода EndEdit. Так, при выполнении следующего фрагмента файла DataEditing.h примера DataEditing исключение не возникает.

DataRow *rowToEdit = books › Rows › get_Item(0);
// книги › Строки
rowToEdit › BeginEdit();
try
{
rowToEdit › set_Item("Author!d", _box(21));
}
catch(Exception *e) // Исключение
{
Console::WriteLine(
"\n {0] while editing a row.", e › Message);
 // при редактировании строки, Сообщение);
Console::WriteLine(); }

Однако исключение возникает, как только в программе вызывается метод EndEdit.

try {
rowToEdit › EndEdit(); }
catch(Exception *e) // Исключение {
Console::WriteLine();
Console::WriteLine(
"\n{0} on EndEdit", e › Message); // Сообщение
Console::WriteLine(); }

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

ForeignKeyConstraint Authors › Books requires the child key values (21)
 to exist in the parent table, on EndEdit
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.