Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 196

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 190 191 192 193 194 195 < 196 > 197 198 199 200 201 202 .. 260 >> Следующая

Visual Basic .NET
<AutoComplete()>
Public Sub KyTransactionalHethodO
Visual C# .NET
[AutoCompleteO]
public void MyTraflsacticnalKethodO (
Примечание Если вы изменяете содержимое БД средствами командных запросов или хранимых процедур, у5';.&:,/(л:еь, что нужное изменение осуществлено. Помните: запрос, изменивший ноль ззлкгй.л. не генерирует ошибки,
Приложение DistributedTransaction
На прилагаемом к книге компакт-диске записан работающий пример программы (на Visual Basic .NET и Visual C#.NET). демонстрирующей возможности распределенных транзакций. Серверный компонент перемещает денежные средства между и сберегательным счетами, каждый из которых связан с отдельным объектом Connection ADO.NET.
В действительности серверный компонент изменяет дебетовое сальдо обоих счетов с помощью отдельных дочерних классов. Кроме того, этот компонент включает методы, позволяющие прервать даже после как оба дочерних класса завершили свою работу. Клиентское приложение (рис. i I 1" j получает дебетовое сальдо обоих счетов после каждого перевода денежных средств. Данное приложение позволяет убедиться, что изменения, сделанные в контексте отмененной транзакции, не вносятся в БД.
452
Часть III Автономная работа с данными: объект DataSet модели ADO.NET
Г* llfeiiibiritrti (i&fUMivn Е«Ц»р1й
1
Checking Balance: Г Savings Hanns:: ~
-, 500 m
two 00
Transfer.
Amount
<• ToOhedura r roSavrigs I Cause Pelure
J25D 00
Tran der
Рис. 11-19. Клиентское приложение
Прочие преимущества использования служб Component Services
Прочие преимущества — пул соединений, пул объектов и централизованное управление бизнес-логикой — напрямую связаны с выполнением бизнес-объектов под управлением Component Services. Подробнее об этом — в документации MSDN и интерактивной документации Component Services. Кроме того, во вложенной папке Component Servies каталога Framework SDK записаны примеры, использующие данную службу.
В сложных случаях обновления данных всегда используйте ADO.NET
Объект и средства генерации кода типа мастера Data Adapter
Configuration Wizard значительно упрощают обработку большинства сложных случаев обновления данных. К сожалению, они не способны генерировать tin-ку для самых сложных случаев, например, когда требуется выявить и устранить неудачные попытки и др.
Тем не менее фупм.пш. предоставляемые ADO.NET, позволяют успешно справляться с такими ситуациями. Вооружившись полученными в этой главе знаниями, вы сможете решать возникающие проблемы обновления средствами ADO.NET.
Вопросы, которые стоит задавать почаще
Вопрос. Как мастер Data Adapter Configuration Wizard и объект CommandBuilder
обработают ситуацию, в которой требуется обновить содержимое записи после
передачи изменений? Похоже, что автоматически здесь сработает лишь часть функций, пргдогтзкл?скъ:;х этими утилитами.
Ответ. Если БД допускает это, мастер добавит запросы, которые немедленно обновят отображаемые на экране данные после передачи новой или изменения существующей записи. БД типа Oracle и Access, в отличие от БД SQL Server и MSDE, не поддерживают пакетные запросы, возвращающие записи. Если генерировать
ГЛАВА 1 Сложные случаи обновления данных 453
запросы, обновляющие отображаемое содержимое записей, не требуется, щелкните кнопку Advanced Options и снимите соответствующий флажок.
Объект CommandBuildeme генерирует запросов, обновляющих отображаемые данные, независимо от используемой СУБД.
Вопрос. На моей БД определены каскадные ограничения ссылочной целостности. Когда я удаляю существующего клиента, БД автоматически удаляет размещенные этим клиентом заказы. Однако если удалять клиентов и заказы в объекте / >и!<\ н7, то передача обновлений в БД заканчивается ошибкой. Тем не менее при просмотре содержимое БД выглядит так, как если бы изменения были переданы успешно. Что происходит?
Ответ. Если в объекте есть объект DuUiRvkamn. определяющий отноше-
ние между объектами DataTable Orders и Order Details. ADO.NET автоматически помечает связанные дочерние записи как удаленные. Некоторые БД позволяют определять каскадные ограничения ссылочной целостности, функционирующие аналогичным образом. Таким образом, когда вы передаете отложенное удаление заказа, БД удалит запись сам заказ и связанные с ним дочерние записи.
Однако ADO.NET не узнает, что БД каскадировала изменение. В объекте DataSet ADO.NET дочерние записи по-прежнему будут помечены как ожидающие удаления. Если вы передадите в БД отложенные изменения из дочернего объекта Data-Table, BaUvXaapie> попытается удалить записи, которые уже были удалены в соответствии с определенными в БД правилами каскадирования.
Простейшее решение — воспользоваться одним из способов передачи отложенных изменений из объекта описанным в предыдущих разделах этой главы. Передавайте новые записи с помощью метода начиная с верхней части иерархии. Передачу отложенных удалений следует начать с нижней части иерархии.
Вопрос. Объект Recordset ADO предоставляет метод возвращающий ин-
формацию о записях, обновление которых завершилось с ошибкой. Есть ли эквивалент данного метода в модели ADO.NET?
Предыдущая << 1 .. 190 191 192 193 194 195 < 196 > 197 198 199 200 201 202 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100