Транзакции на стороне клиента

работая с данными на стороне

Иногда вам может потребоваться работать с данными на стороне клиента в форме набора данных, имея при этом логику, подобную только что представленной для серверных транзакций, чтобы можно было модифицировать данные, а затем, если что-то пошло не так, вернуть изменения. Работая с данными на стороне клиента, вы можете имитировать транзакцию при помощи методов AcceptChanges И RejectChanges. Как уже говорилось, любые изменения, сделанные в наборе данных, поддерживаются комбинацией состояния строки с текущими и исходными значениями для каждой строки. Если вы сделали в строках вашего набора данных любые изменения и вызываете AcceptChanges, Исходные значения для каждой из модифицированных строк будут заменены текущими значениями, а состояние всех строк установлено в Unchanged. Если вы вызываете Re JectChanges, Текущие значения для любых модифицированных строк будут заменены на исходные значения, вставленные строки отброшены, и состояние всех строк также установлено в Unchanged. Методы AcceptChanges И RejectChanges Определяются в классах DataSet, DataTable И DataRow, Так что вы можете производить эти транзакционно-подобные операции на любом уровне структуры в пределах набора данных, который вам нужен. Используя комбинацию AcceptChanges И Re JectChanges, Вы можете кодировать логику, которая принимает ли отвергает изменения в соответствии с некоторыми критериями. Но в отношении этих методов вы должны иметь в виду, что вы, вообще говоря, должны избегать их применения с набором данных, который собираетесь использовать для обновления базы данных через адаптер данных. Как уже упоминалось, адаптер определяет, какие команды он должен исполнять и для каких строк, исходя из состояния этих строк. Для строк с состоянием Unchanged При обновлении вообще не исполняется никаких команд. Поскольку И AcceptChanges, И Re JectChanges Устанавливают состояние строк в Unchanged, Эти методы имеет смысл использовать с набором данных, обновляющим базу данных, только в сочетании с обсуждавшимися выше обходными приемами для перевода строки в состояние Modified Или Deleted После того, как вызов AcceptChanges Или Re JectChanges Установит немодифицированное состояние строк.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *