Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Две широкие категории изменений в системе определения таблиц связаны с введением виртуальных таблиц (также известных как виртуальные сущности) в Microsoft Dataverse:
- Добавление новых сборок, пространств имен, классов и других типов для поддержки разработки поставщиков данных для пользовательских виртуальных таблиц
- Изменения основной платформы, включая несколько других свойств для поддержки сопоставления внешних источников данных, а также изменения поведения существующих свойств таблицы и столбцов, которые отражают ограничения начальной реализации этой функции.
Сборка SDK данных для Dynamics 365
Сборка SDK для Dynamics 365 Microsoft.Xrm.Sdk.Data.dll содержит типы для создания поставщиков данных пользовательской виртуальной таблицы. Он состоит из следующих пространств имен:
| Namespace | 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 |
| Attributes | допустим | |
| 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 | недопустимо | Deprecated |
| 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 | допустим | |
| Keys | недопустимо | Альтернативные ключи не поддерживаются |
| LogicalCollectionName | допустим | |
| LogicalName | допустим | |
| ManyToManyRelationships | допустим | |
| ManyToOneRelationships | допустим | Не поддерживается между двумя виртуальными таблицами. |
| MetadataId | допустим | |
| MobileOfflineFilters | недопустимо | Всегда false, автономное использование не поддерживается. |
| ObjectTypeCode | допустим | |
| OneToManyRelationships | допустим | |
| OwnershipType | недопустимо | Всегда OrganizationOwned |
| PrimaryIdAttribute | допустим | |
| PrimaryImageAttribute | допустим | |
| PrimaryNameAttribute | допустим | |
| Privileges | недопустимо | |
| 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 | допустим | |
| IsSearchable | допустим | |
| IsSecured | недопустимо | Всегда false, безопасность на уровне полей не поддерживается. |
| IsSortableEnabled | допустим | |
| IsValidForAdvancedFind | допустим | |
| IsValidForCreate | допустим | |
| IsValidForRead | допустим | |
| IsValidForUpdate | допустим | |
| LinkedAttributeId | допустим | |
| LogicalName | допустим | |
| MetadataId | допустим | |
| RequiredLevel | допустим | |
| SchemaName | допустим | |
| Тип источника | недопустимо | Всегда 0, вычисляемые значения и свертки не поддерживаются. |
См. также
Начало работы с виртуальными сущностями
Пользовательские поставщики данных виртуальной таблицы
Образец: Плагин-поставщик данных для универсальной виртуальной таблицы