Поделиться через


Как решения на основе служб Business Connectivity Services узнают об удалении элементов во внешнем источнике данных?

Дата последнего изменения: 15 апреля 2010 г.

Применимо к: SharePoint Server 2010

При работе в оперативном режиме клиент узнает об удалениях при вызове экземпляра метода и получении исключения ObjectNotFoundException или ObjectDeletedException. Однако при работе в кэшированном режиме клиентское приложение не может заранее узнать о том, что один или несколько экземпляров сущностей были удалены во внешнем приложении другим пользователем или приложением.

При обновлении кэша процесс синхронизации пытается выполнить все запросы, и при успешном выполнении всех запросов для подписки и по истечении интервала обновления подписки процесс синхронизации удаляет все экземпляры сущностей, которые не были возвращены ни одним из запросов, так как это означает, что эти экземпляры больше не существуют во внешнем приложении.

Если при выполнении процессом синхронизации операции в очереди во время вызова SpecificFinder возникает исключение ObjectNotFoundException или ObjectDeletedException, это означает, что другой пользователь или приложение удалило этот экземпляр сущности во внешнем приложении. В этом случае процесс синхронизации проверяет очередь на наличие отложенных операций для этого экземпляра сущности. Если такие операции отсутствуют, процесс синхронизации помечает экземпляр сущности как удаленный. Если в очереди находится только отложенная операция удаления, процесс синхронизации помечает операцию как успешную, а экземпляр — как удаленный. Если в очереди находятся другие операции, процесс синхронизации помечает их как сбойные, а экземпляр сущности — как ошибочный (InError).