Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью пакета SDK для данных Microsoft Dataverse разработчики .NET могут создавать пользовательские поставщики данных виртуальной таблицы, чтобы интегрировать внешние типы источников данных, которые не поддерживаются существующим поставщиком данных. Каждый поставщик данных состоит из многократно используемого набора подключаемых модулей Dataverse, реализующих поддерживаемые операции CRUD. Для каждой виртуальной таблицы, также известной как виртуальная сущность, разработчики могут создавать подключаемые модули и регистрировать их, представляющие каждую из операций Create, Update, Retrieve, RetrieveMultiple и Delete. В этом разделе содержатся основные сведения о поставщиках данных и подходах к разработке пользовательских поставщиков, включая пример кода.
Замечание
В качестве альтернативы созданию пользовательского поставщика источника данных следует рассмотреть возможность адаптации источника данных к существующему поставщику данных. Например, если вы создаете интерфейс OData версии 4 для внешнего источника данных, вы можете напрямую получить к нему доступ с помощью предоставленного стандартного поставщика данных OData версии 4, который также поддерживает операции CRUD. Механизм добавления этого интерфейса REST зависит от базовой технологии службы данных; пример см. в статье WCF Data Services 4.5. OData широко поддерживается в отрасли; существует целый спектр специальных инструментов и совместимых технологий.
Предпосылки
Создание и обслуживание пользовательских поставщиков данных требует существенных ресурсов разработки. Необходимо иметь фундаментальные знания в следующих областях:
- Схема внешнего источника данных и связанные приемы доступа к данным. Эти знания зависят от типа внешнего источника данных.
- Схема определения dataverse: Подробнее: Работа с определениями таблиц и столбцов посредством кода.
- Платформа событий dataverse: дополнительные сведения: Event Framework.
- Архитектура и разработка модуля Dataverse: дополнительные сведения: используйте подключаемые модули для расширения бизнес-процессов.
Сборка Microsoft.Xrm.Sdk.Data.dll доступна в виде пакета NuGet: Microsoft.CrmSdk.Data
Категории поставщиков
Существует две общие категории поставщика данных, которые можно создать с помощью сборок пакета SDK для данных виртуальной таблицы: универсальные или целевые. В приведенной ниже таблице описаны эти подходы, и для каждого из них приведена модель разработки поставщика данных, лучше всего для него подходящая.
| Категория | Модель разработки | Описание |
|---|---|---|
| Универсальный | "Пустой" поставщик | Эти поставщики могут гибко переводить выражения запросов FetchXML в связанный запрос к внешнему источнику данных, а затем возвращать полученные записи. Такой поставщик можно повторно использовать для всех экземпляров этого типа источника данных. Этот подход является максимально универсальным, но более сложным для разработки. Если схема источника данных изменилась, затронутые виртуальные таблицы должны быть только переназначены. |
| Целевой | Поставщик LINQ для известной схемы | Такой поставщик только преобразует запросы в связанный вызов LINQ к известному существующему экземпляру источника данных. Источник данных должен быть поставщиком LINQ, как описано в разделе Включение поддержки запросов LINQ в источнике данных. Этот подход ограничен конкретным экземпляром источника данных, но требует написания гораздо меньшего объема кода. Если схема источника данных изменится, поставщик данных необходимо будет обновить и пересобрать. |
Стандартный поставщик данных OData версии 4 и поставщик данных Azure Cosmos DB являются примерами универсальных поставщиков.
Действия по использованию пользовательского поставщика данных
Существует несколько шагов, необходимых для создания решения поставщика данных виртуальной таблицы, который можно импортировать в приложения Dataverse:
- Разработка DLL подключаемого модуля пользовательского поставщика данных (или набора DLL).
- Зарегистрируйте настраиваемый поставщик данных в службе Dataverse с помощью средства регистрации подключаемых модулей (PRT).
- Создание решение поставщика данных.
- Настройте таблицу источника данных, чтобы отразить тип данных или конкретный экземпляр.
- Экспорт решения пользовательского поставщика данных.
Дополнительные сведения : пример: поставщик настраиваемых виртуальных таблиц с операциями CRUD
Разработка подключаемого модуля
Так как виртуальные таблицы поддерживают операции CRUD, вы напишете поставщик данных в виде подключаемого модуля, зарегистрированного для событий Create, Update, Retrieve, RetrieveMultiple и Delete. Каждое соответствующее событие будет содержать информацию в контексте выполнения, описывающие то, какие данные должны возвращаться.
| Event | Контекст выполнения |
|---|---|
| Retrieve | Описывает, какую таблицу следует извлечь, а также столбцы и все связанные таблицы, которые необходимо включить. |
| RetrieveMultiple | Содержит объект, определяющий QueryExpression запрос. Платформа содержит класс QueryExpressionVisitor, предназначенный для проверки различных частей дерева выражений запроса. |
Для участия в обоих мероприятиях необходимо:
- Преобразуйте соответствующую информацию в контексте выполнения в запрос, который будет работать для внешнего источника данных.
- Получите данные из внешней системы.
- Для Retrieve преобразуйте данные в объект Entity; в противном случае, для RetrieveMultiple преобразуйте его в объект EntityCollection. Этот результат возвращается с помощью платформы Dataverse пользователю, выполняющего запрос.
Классы в Microsoft.Xrm.Sdk.Data пространстве имен предоставляют платформу для сопоставления данных запроса Dataverse из контекста выполнения в запрос в формате, соответствующем внешнему источнику данных. Эта платформа поможет преобразовать данные, возвращаемые в соответствующие Entity или EntityCollection типы, ожидаемые платформой Dataverse.
Исключения поставщика данных
Если по каким-либо причинам ваш код не может достичь ожидаемого результата, вы должны выдать соответствующую ошибку. Пространство имен Microsoft.Xrm.Sdk.Data.Exceptions содержит следующие классы исключений, производные от SdkExceptionBase, которые можно использовать для этой цели:
| Класс исключений | Описание |
|---|---|
| AuthenticationException | Произошла ошибка во время проверки подлинности безопасности в службе внешнего источника данных; например, от службы внешних данных получено состояние HTTP 401. Обычно возникает из-за того, что у текущего пользователя нет надлежащих привилегий, или из-за того что сведения о подключении в связанном EntityDataSource неверны. |
| EndpointException | Конфигурация конечной точки в таблице источника данных недопустимая или конечная точка не существует. |
| GenericDataAccessException | Общая ошибка доступа к данным, используемая, если ошибка не сопоставлена с более конкретным исключением. |
| InvalidMetadataException | |
| InvalidQueryException | Указанный запрос недопустим; например, в нем содержится недопустимое сочетание предложений или неподдерживаемый оператор сравнения. |
| ObjectNotFoundException | Указанная запись во внешнем источнике данных не существует. |
| TimeoutException | Внешняя операция не завершилась в течение допустимого времени; Например, результат состояния HTTP 408 из внешней службы данных. |
Регистрация подключаемого модуля
В отличие от обычного плагина, вы будете использовать только инструмент для регистрации плагинов (PRT) для регистрации сборок и плагинов каждого события. Вы не будете регистрировать конкретные действия. Подключаемый модуль будет выполняться на этапе 30, главном этапе транзакции для операции, недоступной для шагов обычного подключаемого модуля. Вместо регистрации шагов вы будете настраивать поставщик данных с использованием следующих таблиц.
| таблица | Описание |
|---|---|
| EntityDataProvider | Определяет подключаемые модули для каждого события и логическое имя источника данных. |
Когда определения для виртуальной таблицы настроены, подключаемые модули регистрируются с помощью PRT и правильные данные конфигурации задаются в таблице EntityDataProvider , виртуальная таблица начнет отвечать на запросы.
Дополнительная информация: создание поставщика данных и добавление модулей к поставщику
Отладка плагинов
Поставщик пользовательской виртуальной таблицы — это тип подключаемого модуля. Используйте информацию из этих тем для отладки подключаемых модулей для поставщиков пользовательских виртуальных таблиц: Отладка подключаемых модулей и Учебник: отладка подключаемого модуля.
См. также
Начало работы с виртуальными таблицами
Рекомендации по API виртуальных таблиц
Образец: Плагин-поставщик данных для универсальной виртуальной таблицы