Обновление связанных таблиц
Если в наборе данных содержится несколько таблиц, то их необходимо модифицировать индивидуально, вызывая отдельно метод Update каждого адаптера данных. Если таблицы имеют реляционные отношения, то потребуется специфическое обновление базы данных.
Обычно в этом случае изменяются и родительская и связанные дочерние записи набора данных. Например, при добавлении нового клиента формируется одна или более связанных записей заказов этого клиента. Если в самой базе данных заданы правила обеспечения целостности, то при обновлении возможно возникновение ошибок. Например, если переслать в базу данных вновь появившиеся дочерние записи раньше, чем была переслана родительская запись. Поэтому необходимо выполнять определенную последовательность в пересылке: сначала должны послаться новые родительские записи, а потом дочерние.
Наоборот, если вы удаляете связанные записи в наборе данных, необходимо посылать обновления в базу данных в обратном порядке: сначала от дочерней таблицы, потом от родительской. В противном случае при обновлении информации в базе данных возникнет ошибка, потому что правила обеспечения целостности не позволят удалить родительскую запись, пока существуют связанные дочерние записи.
Последовательность обновления связанных таблиц
При обновлении связанных таблиц набора данных очень важно соблюдать определенную последовательность, чтобы не нарушить целостность данных основного источника и не сгенерировать ошибочную ситуацию. Чтобы предотвратить возможные ошибки нарушения целостности данных необходимо модернизировать источник данных в следующей последовательности:
Q дочерняя таблица: удалить записи;
Q родительская таблица: добавить, изменить или удалить записи;
Q дочерняя таблица: добавить или изменить записи.
Для модернизации источника данных из набора данных, который содержит две или более связанных таблиц вызовите метод Update каждого адаптера
данных.
// C#
void Update_Attempt()
{
// Набор dsl содержит только удаленные записи дочерней таблицы.
DataTable dsl=*b
anyDataset.ChildTableName.GetChanges(DataRowState.Deleted);
// Набор ds2 содержит только добавленные записи дочерней таблицы. DataTable ds2=tfe-
anyDataset.ChildTableName.GetChanges(DataRowState.Added);
// Набор ds3 содержит только измененные записи дочерней таблицы.
DataTable ds3=*fe
anyDataset.ChildTableName.GetChanges(DataRowState.Modified);
try
{
//Удаление записей дочерней таблицы DataAdapter2.Update(dsl);
// Добавление и удаление записей родительской таблицы DataAdapterl.Update{anyDataset,"ParentTable"};
Опубликовал vovan666
June 09 2013 06:32:41 ·
0 Комментариев ·
5229 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.