Pertimbangan API untuk tabel virtual

Dua kategori perubahan yang luas pada sistem definisi tabel dikaitkan dengan pengenalan tabel virtual (juga dikenal sebagai entitas virtual) dalam Microsoft Dataverse:

  • Penambahan assembly baru, namespace, kelas, dan jenis lainnya untuk mendukung pengembangan penyedia data tabel virtual kustom
  • Perubahan pada platform inti, termasuk beberapa properti lain untuk mendukung pemetaan sumber data eksternal, dan modifikasi perilaku properti tabel dan kolom yang ada yang mencerminkan batasan implementasi awal fitur ini

Rakitan SDK Data Dynamics 365

Rakitan Dynamics 365 Data SDK, Microsoft.Xrm.Sdk.Data.dll, berisi tipe yang mempermudah pembuatan penyedia data tabel virtual kustom. Ini terdiri dari namespace berikut:

Namespace Description
Microsoft.Xrm.Sdk.Data Namespace dasar yang berisi beberapa jenis umum, seperti enumerasi AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Berisi kelas dan antarmuka yang mendukung refleksi dinamis, pencocokan jenis, dan pembuatan kode. Terutama digunakan oleh mesin penyedia internal.
Microsoft.Xrm.Sdk.Data.Converters Sekumpulan kelas untuk mengonversi jenis XRM standar ke jenis dasar .NET yang sesuai
Microsoft.Xrm.Sdk.Data.Exceptions Sekumpulan kelas pengecualian yang mewakili kesalahan yang dapat terjadi selama resolusi nilai runtime. Semua berasal dari Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Kelas untuk membantu menerapkan transformasi kueri yang didukung, seperti FILTER, JOIN, dan ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Kelas dan antarmuka yang membangun pemetaan dari jenis definisi tabel virtual ke jenis eksternal.
Microsoft.Xrm.Sdk.Data.Visitors Kelas yang mengimplementasikan pola pengunjung untuk melakukan operasi tertentu pada parameter QueryExpression yang diteruskan ke penyedia data selama permintaan RetrieveMultiple. Menyediakan dukungan khusus untuk kueri generik dan pemrosesan berbasis LINQ. Kelas-kelas ini berasal dari Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Namespace ini berada dalam rakitan yang disertakan dalam paket NuGet ini: Microsoft.CrmSdk.Data.

Perubahan pada platform inti

Perubahan berikut pada jenis referensi Dataverse standar mendukung tabel virtual.

Tabel baru

Dataverse mengekspos penyedia dan sumber data tabel virtual sebagai tabel berikut: EntityDataProvider dan EntityDataSource.

Properti baru untuk definisi tabel

Empat properti baru ditambahkan ke EntityMetadata kelas :

Property Description
DataProviderId GUID yang mengidentifikasi penyedia data tabel virtual terkait
DataSourceId GUID yang mengidentifikasi sumber data tabel virtual terkait
ExternalName Nama untuk jenis ini di sumber data eksternal
ExternalCollectionName Nama jamak untuk jenis ini, digunakan di UI dan untuk mendukung akses OData

Dua properti baru ditambahkan ke AttributeMetadata kelas :

Property Description
ExternalName Nama jenis di sumber data eksternal
IsDataSourceSecret Menunjukkan apakah bidang berisi informasi sensitif

Properti ExternalName juga ditambahkan pada kelas OptionMetadata dan OptionSetMetadata. Nama eksternal ini membantu pemetaan sumber data eksternal, dengan menentukan nama jenis terkait di sumber data eksternal. Properti ini hanya digunakan untuk tabel virtual. Untuk jenis entitas kustom bawaan atau standar, nama eksternal ini harus null.

Pembuatan tabel virtual

Pendekatan untuk membuat jenis tabel virtual secara terprogram sedikit berbeda dari pembuatan jenis entitas kustom standar dalam hal itu:

  • Jika Anda mengetahui penyedia data terkait (dan sumber data opsional) pada waktu pembuatan, tentukan nilai-nilai ini.
  • Jika Anda tidak tahu penyedia data untuk jenis ini, atur DataProviderId ke 7015A531-CC0D-4537-B5F2-C882A1EB65AD dan atur DataSourceId ke null. Sebelum Anda menggunakan instans jenis ini pada runtime, tetapkan properti ini nilai yang sesuai.

Saat mendaftarkan plugin, Anda membuat dua tabel baru, EntityDataProvider dan secara EntityDataSourceopsional . ID masing-masing, entitydataproviderid dan entitydatasourceid, mewakili GUID yang diperlukan tersebut. (Jika tidak, pengembang jarang perlu mengakses jenis kustom ini secara langsung.) Perhatikan bahwa DataSource berisi properti entitydataproviderid yang harus cocok dengan jenis DataProvider yang sesuai atau pengecualian runtime dilemparkan.

Peringatan

Tabel standar (nonvirtual) harus memiliki nilai yang terkait dengan DataProviderId dan DataSourceId disetel ke nilai default (null), jika tidak, pengecualian runtime terjadi. Setelah dibuat, Anda tidak dapat mengonversi dari jenis nonvirtual ke jenis virtual, atau sebaliknya.

Perubahan perilaku properti definisi tabel

Tabel berikut ini merinci bagaimana perilaku properti EntityMetadata standar berubah saat Anda menerapkannya ke tabel virtual. Beberapa properti tidak valid untuk tabel virtual, sedangkan properti lain dibatasi dalam cakupan atau nilai.

Properti Metadata Berlaku? Notes
ActivityTypeMask tidak valid Selalu 0
Atributs sah
AutoCreateAccessTeams tidak valid Selalu false
AutoRouteToOwnerQueue tidak valid Selalu false, antrean tidak didukung.
CanBeInManyToMany sah
CanBePrimaryEntityInRelationship sah
CanBeRelatedEntityInRelationship sah
CanChangeHierarchicalRelationship tidak valid Selalu salah, hubungan hierarkis tidak didukung.
CanChangeTrackingBeEnabled tidak valid Selalu false, nilai pelacakan dan audit perubahan tidak didukung.
CanCreateAttributes sah
CanCreateCharts tidak valid Selalu false
CanCreateForms sah
CanCreateViews sah
CanEnableSyncToExternalSearchIndex tidak valid Selalu false
CanModifyAdditionalSettings sah
CanTriggerWorkflow tidak valid Selalu false, alur kerja tidak dapat dipicu.
ChangeTrackingEnabled tidak valid Selalu false
CollectionSchemaName sah
DaysSinceRecordLastModified tidak valid Selalu null atau 0
Description sah
DisplayCollectionName sah
DisplayName sah
EnforceStateTransitions tidak valid StateCode dan Status tidak didukung.
EntityColor sah
EntityHelpUrl sah
EntityHelpUrlEnabled sah
EntitySetName sah
ExtensionData tidak valid Properti yang tidak digunakan lagi
HasChanged sah
IconLargeName sah
IconMediumName sah
IconSmallName sah
IntroducedVersion sah
IsActivity tidak valid Selalu false, aktivitas tidak didukung.
IsActivityParty tidak valid Selalu false
IsAIRUpdated tidak valid Deprecated
IsAuditEnabled tidak valid Selalu false, audit tidak didukung.
IsAvailableOffline tidak valid Selalu salah, penggunaan offline tidak didukung.
IsBusinessProcessEnabled tidak valid Selalu salah, proses bisnis tidak didukung.
IsChildEntity tidak valid Selalu false, semua tabel virtual dimiliki secara organisasi.
IsConnectionsEnabled sah
IsCustomEntity sah
Dapat Disesuaikan sah
IsDocumentManagementEnabled sah
IsDocumentRecommendationsEnabled tidak valid Selalu false, fitur baru ini tidak didukung.
IsDuplicateDetectionEnabled tidak valid Selalu false, tetapi deteksi duplikat dapat dilakukan di sumber data.
IsEnabledForCharts terbatas Hanya untuk klausa Fetch yang didukung.
IsEnabledForTrace sah
IsImportable sah
IsInteractionCentricEnabled sah
IsIntersect sah
IsKnowledgeManagementEnabled tidak valid Selalu salah, integrasi manajemen pengetahuan tidak didukung.
IsMailMergeEnabled sah
IsManaged sah
IsMappable sah
IsOfflineInMobileClient tidak valid Selalu false, nilai tabel virtual tidak di-cache untuk penggunaan offline.
IsOneNoteIntegrationEnabled sah
IsOptimisticConcurrencyEnabled tidak valid Selalu false, keserempakan harus diterapkan dalam sumber data.
IsPrivate sah
IsQuickCreateEnabled sah
IsReadOnlyInMobileClient sah
IsRenameable sah
IsSLAEnabled tidak valid Selalu false
IsStateModelAware tidak valid
IsValidForAdvancedFind sah
IsValidForQueue sah
IsVisibleInMobile sah
IsVisibleInMobileClient sah
Keys tidak valid Kunci alternatif tidak didukung
LogicalCollectionName sah
LogicalName sah
ManyToManyRelationships sah
ManyToOneRelationships sah Tidak didukung di antara dua tabel virtual.
MetadataId sah
MobileOfflineFilters tidak valid Selalu salah, penggunaan offline tidak didukung.
ObjectTypeCode sah
OneToManyRelationships sah
OwnershipType tidak valid Selalu OrganizationOwned
PrimaryIdAttribute sah
PrimaryImageAttribute sah
PrimaryNameAttribute sah
Hak istimewa tidak valid
RecurrenceBaseEntityLogicalName tidak valid
ReportViewName tidak valid
SchemaName sah
SyncToExternalSearchIndex tidak valid

Perubahan perilaku properti definisi kolom

Tabel berikut menjelaskan bagaimana perilaku properti AttributeMetadata standar berubah saat Anda menerapkannya ke tabel virtual. Beberapa properti tidak valid untuk tabel virtual, sedangkan properti lain memiliki cakupan atau nilai terbatas.

Properti Metadata Berlaku? Notes
ColumnNumber tidak valid
DeprecatedVersion sah
Description sah
DisplayName sah
EntityLogicalName sah
ExtensionData tidak valid
HasChanged sah
InheritsFrom sah
IntroducedVersion sah
IsAuditEnabled tidak valid Selalu false, audit tidak didukung.
IsCustomAttribute sah
Dapat Disesuaikan sah
IsFilterable sah
IsGlobalFilterEnabled sah
IsLogical sah
IsManaged sah
IsPrimaryId sah
IsPrimaryName sah
IsRenameable sah
IsSearchable sah
IsSecured tidak valid Selalu false, keamanan tingkat bidang tidak didukung.
IsSortableEnabled sah
IsValidForAdvancedFind sah
IsValidForCreate sah
ApakahValidUntukBaca sah
IsValidForUpdate sah
LinkedAttributeId sah
LogicalName sah
MetadataId sah
Tingkat yang Diperlukan sah
SchemaName sah
Jenis Sumber tidak valid Selalu 0, nilai terhitung atau rollup tidak didukung.

Baca juga

Memulai dengan entitas virtual
Penyedia data tabel virtual khusus
Sampel: Plug-in generik penyedia data tabel virtual