다음을 통해 공유


가상 테이블의 API 고려 사항

Microsoft Dataverse에서 가상 테이블(가상 엔터티라고도 함)의 도입과 관련된 테이블 정의 시스템에 대한 두 가지 광범위한 변경 내용이 있습니다.

  • 사용자 지정 가상 테이블 데이터 공급자 개발을 지원하기 위해 새 어셈블리, 네임스페이스, 클래스 및 기타 형식 추가
  • 외부 데이터 원본 매핑을 지원하는 몇 가지 추가 속성 및 이 기능의 초기 구현에 대한 제한 사항을 반영하는 기존 테이블 및 열 속성의 동작 수정을 포함하여 핵심 플랫폼에 대한 변경 내용

Dynamics 365 Data SDK 어셈블리

Dynamics 365 Data SDK 어셈블리 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 RetrieveMultiple 요청 중에 데이터 공급자에게 전달된 QueryExpression 매개 변수에 대해 특정 작업을 수행하기 위해 방문자 패턴을 구현하는 클래스입니다. 일반 쿼리 및 LINQ 기반 처리 모두에 대한 특정 지원을 제공합니다. 이러한 클래스는 Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase에서 파생됩니다.

이 어셈블리는 NuGet 패키지로 배포됩니다 . Microsoft.CrmSdk.Data

핵심 플랫폼에 대한 변경

가상 테이블을 지원하기 위해 표준 Dataverse 참조 형식에 대한 다음과 같은 변경 내용이 도입되었습니다.

새 테이블

Dataverse는 가상 테이블 데이터 공급자 및 원본을 다음과 같은 테이블로 노출합니다: EntityDataProviderEntityDataSource.

새 테이블 정의 속성

클래스에 4개의 새 속성이 EntityMetadata 추가되었습니다.

재산 Description
DataProviderId 연결된 가상 테이블 데이터 공급자를 식별하는 GUID
DataSourceId 연결된 가상 테이블 데이터 원본을 식별하는 GUID
ExternalName 외부 데이터 원본의 이 유형의 이름
ExternalCollectionName UI에 사용되고 OData 액세스를 지원하는 이 형식의 복수 이름

클래스에 두 개의 새 속성이 AttributeMetadata 추가되었습니다.

재산 Description
ExternalName 외부 데이터 원본의 형식 이름
IsDataSourceSecret 필드에 중요한 정보가 포함되어 있는지 여부를 나타냅니다.

속성 ExternalNameOptionMetadata 클래스와 OptionSetMetadata 클래스에도 추가되었습니다. 이러한 외부 이름은 외부 데이터 원본에서 연결된 형식의 이름을 지정하여 외부 데이터 원본 매핑을 지원합니다. 이러한 속성은 가상 테이블에만 사용됩니다. 기본 제공 또는 표준 사용자 지정 엔터티 형식의 경우 이러한 외부 이름은 여야 null합니다.

가상 테이블 만들기

가상 테이블 형식을 프로그래밍 방식으로 만드는 방법은 다음과 같은 표준 사용자 지정 엔터티 형식 만들기와 약간 다릅니다.

  • 연결된 데이터 공급자(및 선택적으로 데이터 원본)가 생성 시 알려진 경우 이러한 공급자가 지정됩니다.
  • 이 형식에 대한 데이터 공급자를 알 수 없는 경우 최소한 DataProviderId7015A531-CC0D-4537-B5F2-C882A1EB65AD로 설정되고 DataSourceIdnull로 설정됩니다. 런타임에 이 형식의 인스턴스를 사용하려면 이러한 속성에 적절한 값이 할당되어야 합니다.

플러그인을 등록할 때 EntityDataProvider 테이블과 선택적으로 EntityDataSource 테이블이 생성되며, 그 각각의 ID인 entitydataprovideridentitydatasourceid가 필요한 GUID를 나타냅니다. (그렇지 않으면 개발자는 이러한 사용자 지정 형식에 직접 액세스할 필요가 거의 없습니다.) DataSource에는 해당 DataProvider 형식과 일치해야 하는 속성 entitydataproviderid 이 포함되어 있거나 런타임 예외가 throw됩니다.

경고

표준(가상이 아닌) 테이블에는 DataProviderId 연결된 값이 있어야 하며 DataSourceId 기본값()null으로 설정해야 합니다. 그렇지 않으면 런타임 예외가 throw됩니다. 만든 후에는 가상이 아닌 형식에서 가상 형식으로 변환하거나 반대로 변환할 수 없습니다.

테이블 정의 속성 동작 변경

다음 표에서는 가상 테이블에 적용할 때 표준 EntityMetadata 속성 의 동작을 수정하는 방법을 자세히 설명합니다. 일부 속성은 가상 테이블에 유효하지 않은 반면 다른 속성은 범위 또는 값으로 제한됩니다.

Metadata 속성 적용 여부 Notes
ActivityTypeMask 유효하지 않음 항상 0
Attributes 유효함
AutoCreateAccessTeams 유효하지 않음 항상 false
AutoRouteToOwnerQueue 유효하지 않음 항상 false이며 큐는 지원되지 않습니다.
CanBeInManyToMany 유효함
CanBePrimaryEntityInRelationship 유효함
CanBeRelatedEntityInRelationship 유효함
CanChangeHierarchicalRelationship 유효하지 않음 항상 false이며 계층적 관계는 지원되지 않습니다.
CanChangeTrackingBeEnabled 유효하지 않음 항상 false이면 변경 내용 추적 및 감사 값이 지원되지 않습니다.
CanCreateAttributes 유효함
CanCreateCharts 유효하지 않음 항상 false
CanCreateForms 유효함
CanCreateViews 유효함
CanEnableSyncToExternalSearchIndex 유효하지 않음 항상 false
CanModifyAdditionalSettings 유효함
CanTriggerWorkflow 유효하지 않음 항상 false이며 워크플로를 트리거할 수 없습니다.
ChangeTrackingEnabled 유효하지 않음 항상 false
CollectionSchemaName 유효함
DaysSinceRecordLastModified 유효하지 않음 항상 null 또는 0
Description 유효함
DisplayCollectionName 유효함
디스플레이 이름 유효함
EnforceStateTransitions 유효하지 않음 StateCode 및 상태는 지원되지 않습니다.
EntityColor 유효함
EntityHelpUrl 유효함
EntityHelpUrlEnabled 유효함
EntitySetName 유효함
ExtensionData 유효하지 않음 사용되지 않는 속성
HasChanged 유효함
IconLargeName 유효함
IconMediumName 유효함
IconSmallName 유효함
IntroducedVersion 유효함
IsActivity 유효하지 않음 항상 false이며 활동은 지원되지 않습니다.
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 유효하지 않음 항상 false이며 지식 관리 통합은 지원되지 않습니다.
IsMailMergeEnabled 유효함
IsManaged 유효함
IsMappable 유효함
IsOfflineInMobileClient 유효하지 않음 항상 거짓, 가상 테이블 값은 오프라인 사용을 위해 캐시되지 않습니다.
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 유효함
권한 유효하지 않음
RecurrenceBaseEntityLogicalName 유효하지 않음
ReportViewName 유효하지 않음
SchemaName 유효함
SyncToExternalSearchIndex 유효하지 않음

열 정의 속성 동작 변경

다음 표에서는 가상 테이블에 적용할 때 표준 AttributeMetadata 속성 의 동작을 수정하는 방법을 설명합니다. 일부 속성은 가상 테이블에 유효하지 않은 반면 다른 속성은 범위 또는 값으로 제한됩니다.

Metadata 속성 적용 여부 Notes
ColumnNumber 유효하지 않음
DeprecatedVersion 유효함
Description 유효함
디스플레이 이름 유효함
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, 계산 값 또는 롤업 값은 지원되지 않습니다.

참고하십시오

가상 엔터티 시작
사용자 지정 가상 테이블 데이터 공급자
샘플: 일반 가상 테이블 데이터 공급자 플러그 인