Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Две широкие категории изменений в системе определения таблиц связаны с введением виртуальных таблиц (также известных как виртуальные сущности) в Microsoft Dataverse:
- Добавление новых сборок, пространств имен, классов и других типов для поддержки разработки поставщиков данных для пользовательских виртуальных таблиц
- Изменения основной платформы, включая несколько других свойств для поддержки сопоставления внешних источников данных, а также изменения поведения существующих свойств таблицы и столбцов, которые отражают ограничения начальной реализации этой функции.
Сборка пакета SDK для данных Dynamics 365
Сборка пакета SDK для данных Dynamics 365 Microsoft.Xrm.Sdk.Data.dll содержит типы, предназначенные для облегчения создания пользовательских поставщиков данных виртуальных таблиц. Он состоит из следующих пространств имен:
| Пространство имен | Description |
|---|---|
| Microsoft.Xrm.Sdk.Data | Базовое пространство имен, содержащее несколько распространенных типов, таких как перечисление AllowedQueryOptions |
| Microsoft.Xrm.Sdk.Data.CodeGen | Содержит классы и интерфейсы, поддерживающие динамическое отражение, сопоставление типов и генерацию кода. Главным образом используется подсистемой внутренних поставщиков. |
| Microsoft.Xrm.Sdk.Data.Converters | Набор классов для преобразования стандартных типов XRM в соответствующие .NET базовые типы |
| Microsoft.Xrm.Sdk.Data.Exceptions | Набор классов исключений, представляющих ошибки, которые могут возникать во время разрешения значений среды выполнения. Все они являются производными от Microsoft.Xrm.Sdk.SdkExceptionBase. |
| Microsoft.Xrm.Sdk.Data.Expressions | Классы, помогающие реализовать поддерживаемые преобразования запросов, такие как FILTER, JOIN и ORDER. |
| Microsoft.Xrm.Sdk.Data.Mappings | Классы и интерфейсы, которые создают сопоставление между типами виртуального определения таблицы и внешними типами. |
| Microsoft.Xrm.Sdk.Data.Visitors | Классы, реализующие шаблон посетителя для выполнения определенных операций с параметром QueryExpression, передаваемым поставщику данных в рамках запросов RetrieveMultiple. Предоставляет конкретную поддержку как для обработки универсальных запросов, так и обработки на основе LINQ. Эти классы являются производными от Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase. |
Эти пространства имен находятся в сборке, включенной в этот пакет NuGet: Microsoft.CrmSdk.Data.
Изменения в базовой платформе
Следующие изменения стандартных ссылочных типов Dataverse поддерживают виртуальные таблицы.
Новые таблицы
Dataverse предоставляет поставщики и источники данных виртуальной таблицы в следующих таблицах: EntityDataProvider и EntityDataSource.
Новые свойства определения таблицы
В класс были добавлены EntityMetadata четыре новых свойства:
| Свойство | Description |
|---|---|
| DataProviderId | GUID, который идентифицирует поставщика данных связанной виртуальной таблицы |
| DataSourceId | GUID, определяющий связанный источник данных виртуальной таблицы |
| ExternalName | Название этого типа во внешнем источнике данных |
| ExternalCollectionName | Имя этого типа во множественном числе, используемое в пользовательском интерфейсе и для поддержки доступа OData |
В класс были добавлены AttributeMetadata два новых свойства:
| Свойство | Description |
|---|---|
| ExternalName | Имя типа во внешнем источнике данных |
| IsDataSourceSecret | Указывает, содержит ли поле конфиденциальную информацию |
Свойство ExternalName также было добавлено в OptionMetadata классы и OptionSetMetadata классы. Эти внешние имена помогают сопоставлению внешних источников данных путем указания имени связанного типа во внешнем источнике данных. Эти свойства используются только для виртуальных таблиц. Для встроенного или стандартного типа пользовательской сущности эти внешние имена должны быть null.
Создание виртуальной таблицы
Подход к программному созданию типа виртуальной таблицы отличается от создания стандартного типа пользовательской сущности тем, что:
- Если вы знаете связанный поставщик данных (и при необходимости источник данных) во время создания, укажите эти значения.
- Если вы не знаете поставщика данных для этого типа, установите DataProviderId на
7015A531-CC0D-4537-B5F2-C882A1EB65ADи установите DataSourceId наnull. Прежде чем использовать экземпляры этого типа во время выполнения, назначьте эти свойства соответствующим значениям.
При регистрации подключаемого модуля вы создаете две новые таблицы EntityDataProvider и по желанию EntityDataSource. Их соответствующие идентификаторы, entitydataproviderid и entitydatasourceid, представляют собой необходимые GUID. (В остальных случаях разработчикам довольно редко требуется получать доступ к этим пользовательским типам напрямую.) Обратите внимание, что DataSource содержит свойство entitydataproviderid, которое должно совпадать с соответствующим типом DataProvider; иначе во время выполнения будет создано исключение.
Предупреждение
У стандартных (невиртуальных) таблиц значения связанных с ними DataProviderId и DataSourceId должны быть заданы равными значениям по умолчанию (null), иначе во время выполнения будет создано исключение. После создания не удается преобразовать невиртуальный тип в виртуальный тип или обратный.
Изменения в поведении свойств определения таблицы
В следующей таблице описано, как поведение стандартных свойств EntityMetadata изменяется при применении их к виртуальным таблицам. Некоторые свойства недопустимы для виртуальных таблиц, в то время как другие являются ограниченными в области или значении.
| Свойство метаданных | Применяется? | Основание |
|---|---|---|
| ActivityTypeMask | недопустимо | Всегда 0 |
| Атрибуты | действительный | |
| AutoCreateAccessTeams | недопустимо | Всегда false |
| AutoRouteToOwnerQueue | недопустимо | Всегда false, очереди не поддерживаются. |
| CanBeInManyToMany | действительный | |
| CanBePrimaryEntityInRelationship | действительный | |
| CanBeRelatedEntityInRelationship | действительный | |
| CanChangeHierarchicalRelationship | недопустимо | Всегда ложно: иерархические связи не поддерживаются. |
| CanChangeTrackingBeEnabled | недопустимо | Всегда значение false, отслеживание изменений и аудит значений не поддерживаются. |
| CanCreateAttributes | действительный | |
| CanCreateCharts | недопустимо | Всегда false |
| CanCreateForms | действительный | |
| CanCreateViews | действительный | |
| CanEnableSyncToExternalSearchIndex | недопустимо | Всегда false |
| CanModifyAdditionalSettings | действительный | |
| CanTriggerWorkflow | недопустимо | Всегда значение false, активация рабочих процессов невозможна. |
| ChangeTrackingEnabled | недопустимо | Всегда false |
| CollectionSchemaName | действительный | |
| DaysSinceRecordLastModified | недопустимо | Всегда NULL или 0 |
| Description | действительный | |
| DisplayCollectionName | действительный | |
| DisplayName | действительный | |
| EnforceStateTransitions | недопустимо | StateCode и Status не поддерживаются. |
| EntityColor | действительный | |
| EntityHelpUrl | действительный | |
| EntityHelpUrlEnabled | действительный | |
| EntitySetName | действительный | |
| ExtensionData | недопустимо | Нерекомендуемое свойство |
| HasChanged | действительный | |
| IconLargeName | действительный | |
| IconMediumName | действительный | |
| IconSmallName | действительный | |
| IntroducedVersion | действительный | |
| IsActivity | недопустимо | Всегда неверно: действия не поддерживаются. |
| IsActivityParty | недопустимо | Всегда false |
| IsAIRUpdated | недопустимо | Устарело |
| IsAuditEnabled | недопустимо | Всегда "false". Аудит не поддерживается. |
| IsAvailableOffline | недопустимо | Всегда false, автономное использование не поддерживается. |
| IsBusinessProcessEnabled | недопустимо | Всегда значение false, бизнес-процессы не поддерживаются. |
| IsChildEntity | недопустимо | Всегда false, все виртуальные таблицы принадлежат организации. |
| IsConnectionsEnabled | действительный | |
| IsCustomEntity | действительный | |
| IsCustomizable | действительный | |
| IsDocumentManagementEnabled | действительный | |
| IsDocumentRecommendationsEnabled | недопустимо | Всегда false, эта новая функция не поддерживается. |
| IsDuplicateDetectionEnabled | недопустимо | Всегда false, но поиск повторяющихся данных может выполняться в источнике данных. |
| IsEnabledForCharts | ограниченно допустимо | Только для поддерживаемых предложений Fetch. |
| IsEnabledForTrace | действительный | |
| IsImportable | действительный | |
| IsInteractionCentricEnabled | действительный | |
| IsIntersect | действительный | |
| IsKnowledgeManagementEnabled | недопустимо | Всегда ложь. Интеграция управления знаниями не поддерживается. |
| IsMailMergeEnabled | действительный | |
| IsManaged | действительный | |
| IsMappable | действительный | |
| IsOfflineInMobileClient | недопустимо | Всегда значение false, значения виртуальных таблиц не кэшируются для автономного использования. |
| IsOneNoteIntegrationEnabled | действительный | |
| IsOptimisticConcurrencyEnabled | недопустимо | Всегда false, параллелизм должен быть реализован в источнике данных. |
| IsPrivate | действительный | |
| IsQuickCreateEnabled | действительный | |
| IsReadOnlyInMobileClient | действительный | |
| IsRenameable | действительный | |
| IsSLAEnabled | недопустимо | Всегда false |
| IsStateModelAware | недопустимо | |
| IsValidForAdvancedFind | действительный | |
| IsValidForQueue | действительный | |
| IsVisibleInMobile | действительный | |
| IsVisibleInMobileClient | действительный | |
| Ключи | недопустимо | Альтернативные ключи не поддерживаются |
| LogicalCollectionName | действительный | |
| LogicalName | действительный | |
| ManyToManyRelationships | действительный | |
| ManyToOneRelationships | действительный | Не поддерживается между двумя виртуальными таблицами. |
| MetadataId | действительный | |
| MobileOfflineFilters | недопустимо | Всегда false, автономное использование не поддерживается. |
| ObjectTypeCode | действительный | |
| OneToManyRelationships | действительный | |
| Тип Собственности | недопустимо | Всегда OrganizationOwned |
| PrimaryIdAttribute | действительный | |
| PrimaryImageAttribute | действительный | |
| PrimaryNameAttribute | действительный | |
| Привилегии | недопустимо | |
| RecurrenceBaseEntityLogicalName | недопустимо | |
| ReportViewName | недопустимо | |
| SchemaName | действительный | |
| SyncToExternalSearchIndex | недопустимо |
Изменения в поведении свойств определения столбцов
В следующей таблице объясняется, как поведение стандартных свойств AttributeMetadata изменяется при применении их к виртуальным таблицам. Некоторые свойства недопустимы для виртуальных таблиц, а другие имеют ограниченную область или значение.
| Свойство метаданных | Применяется? | Основание |
|---|---|---|
| ColumnNumber | недопустимо | |
| DeprecatedVersion | действительный | |
| Description | действительный | |
| DisplayName | действительный | |
| EntityLogicalName | действительный | |
| ExtensionData | недопустимо | |
| HasChanged | действительный | |
| InheritsFrom | действительный | |
| IntroducedVersion | действительный | |
| IsAuditEnabled | недопустимо | Всегда "false". Аудит не поддерживается. |
| IsCustomAttribute | действительный | |
| IsCustomizable | действительный | |
| IsFilterable | действительный | |
| IsGlobalFilterEnabled | действительный | |
| IsLogical | действительный | |
| IsManaged | действительный | |
| IsPrimaryId | действительный | |
| IsPrimaryName | действительный | |
| IsRenameable | действительный | |
| Доступно для поиска | действительный | |
| IsSecured | недопустимо | Всегда false, безопасность на уровне полей не поддерживается. |
| IsSortableEnabled | действительный | |
| IsValidForAdvancedFind | действительный | |
| IsValidForCreate | действительный | |
| IsValidForRead | действительный | |
| IsValidForUpdate | действительный | |
| LinkedAttributeId | действительный | |
| ЛогическоеИмя | действительный | |
| MetadataId | действительный | |
| Требуемый уровень | действительный | |
| SchemaName | действительный | |
| Тип источника | недопустимо | Всегда значение 0, вычисляемые значения и свертки не поддерживаются. |
См. также
Начало работы с виртуальными сущностями
Пользовательские поставщики данных виртуальной таблицы
Образец: Плагин-поставщик данных для универсальной виртуальной таблицы