Considerații API pentru tabelele virtuale

Două categorii largi de modificări ale sistemului de definire a tabelelor sunt asociate cu introducerea tabelelor virtuale (cunoscute și ca entități virtuale) în Microsoft Dataverse:

  • Adăugarea unui nou asamblare, spații de nume, clase și alte tipuri pentru a sprijini dezvoltarea furnizorilor de date virtuale personalizate
  • Modificări ale platformei de bază, inclusiv câteva alte proprietăți pentru a susține maparea surselor de date externe, și modificarea comportamentelor proprietăților existente ale tabelelor și coloanelor care reflectă limitările implementării inițiale a acestei caracteristici

Asamblarea SDK-ului de date Dynamics 365

Ansamblul Dynamics 365 Data SDK, Microsoft.Xrm.Sdk.Data.dll, conține tipuri care ajută la crearea unor furnizori de date virtuale personalizate. Acesta cuprinde următoarele spații de nume:

Spațiu nume Descriere
Microsoft.Xrm.Sdk.Data Spațiu de nume de bază care conține câteva tipuri comune, cum ar fi enumerarea AllowedQueryOptions
Microsoft.Xrm.Sdk.Data.CodeGen Conține clase și interfețe care acceptă reflecția dinamică, potrivirea tipurilor și generarea codului. Utilizat în principal de motorul furnizorului intern.
Microsoft.Xrm.Sdk.Data.Converters Un set de clase pentru a converti tipurile standard XRM în tipurile lor fundamentale corespunzătoare .NET
Microsoft.Xrm.Sdk.Data.Exceptions Un set de clase de excepții care reprezintă erori care pot apărea în timpul rezoluției valorii de execuție. Toate sunt derivate din Microsoft.Xrm.Sdk.SdkExceptionBase.
Microsoft.Xrm.Sdk.Data.Expressions Clase pentru a ajuta la implementarea transformărilor de interogare suportate, precum FILTER, JOIN și ORDER.
Microsoft.Xrm.Sdk.Data.Mappings Clase și interfețe care construiesc maparea de la tipuri de definiție de tabele virtuale la tipuri externe.
Microsoft.Xrm.Sdk.Data.Visitors Clase care implementează modelul vizitatorului pentru a efectua operațiuni specifice pe parametrul QueryExpression transmis furnizorului de date în timpul solicitărilor RetrieveMultiple . Oferă suport specific atât pentru interogarea generică, cât și pentru procesarea bazată pe LINQ. Aceste clase sunt derivate din Microsoft.Xrm.Sdk.Query.QueryExpressionVisitorBase.

Aceste spații de nume se află în asamblarea inclusă în acest pachet NuGet: Microsoft.CrmSdk.Data.

Modificări ale platformei de bază

Următoarele modificări ale tipurilor standard de referință Dataverse suportă tabele virtuale.

Tabele noi

Dataverse expune furnizorii și sursele virtuale de date de tabele ca următoarele tabele: EntityDataProvider și EntityDataSource.

Proprietăți noi de definiție a tabelului

Patru proprietăți noi au fost adăugate la clasă EntityMetadata :

Proprietate Descriere
DataProviderId GUID care identifică furnizorul de date al tabelului virtual asociat
DataSourceId GUID care identifică sursa de date asociată a tabelului virtual
ExternalName Nume pentru acest tip în sursa de date externă
ExternalCollectionName Nume la plural pentru acest tip, utilizat în interfața de utilizare și pentru a accepta accesul OData

Două noi proprietăți au fost adăugate la clasă AttributeMetadata :

Proprietate Descriere
ExternalName Numele tipului din sursa de date externă
IsDataSourceSecret Indică dacă câmpul conține informații sensibile

Proprietatea ExternalName a fost, de asemenea, adăugată la clasele OptionMetadata și OptionSetMetadata Aceste denumiri externe ajută la maparea surselor de date externe, specificând numele tipului asociat în sursa externă de date. Aceste proprietăți sunt folosite doar pentru tabele virtuale. Pentru un tip de entitate personalizat încorporat sau standard, aceste nume externe trebuie să fie null.

Crearea tabelelor virtuale

Abordarea pentru crearea programatică a unui tip de tabel virtual diferă ușor de crearea unui tip de entitate personalizat standard prin faptul că:

  • Dacă cunoști furnizorul de date asociat (și opțional sursa de date) la momentul creării, specifică aceste valori.
  • Dacă nu cunoști furnizorul de date pentru acest tip, setează DataProviderId la 7015A531-CC0D-4537-B5F2-C882A1EB65AD și setează DataSourceId la null. Înainte să folosești instanțe de acest tip la rulare, atribuie acestor proprietăți valori adecvate.

Când înregistrezi un plugin, creezi două tabele noi, EntityDataProvider și, EntityDataSourceopțional, . ID-urile lor respective, entitydataproviderid și entitydatasourceid, reprezintă aceste GUID-uri obligatorii. (În rest, dezvoltatorii rareori trebuie să acceseze aceste tipuri personalizate direct.) Rețineți că DataSource conține proprietatea entitydataproviderid care trebuie să corespundă tipului DataProvider corespunzător, altfel se aruncă o excepție la runtime.

Avertisment

Tabelele standard (nevirtuale) trebuie să aibă valorile asociate DataProviderId și DataSourceId setate la valorile implicite (null), altfel se aruncă o excepție la runtime. Odată creat, nu poți converti dintr-un tip non-virtual într-unul virtual sau invers.

Modificări ale comportamentului proprietății definiției tabelului

Tabelul următor detaliază modul în care comportamentul proprietăților standard EntityMetadata se schimbă atunci când le aplici tabelelor virtuale. Unele proprietăți nu sunt valabile pentru tabele virtuale, în timp ce altele sunt limitate ca sferă sau valoare.

Proprietatea Metadate Se aplică? Note
ActivityTypeMask invalid Întotdeauna 0
Atribute valabil
AutoCreateAccessTeams invalid Întotdeauna fals
AutoRouteToOwnerQueue invalid Întotdeauna false, cozile nu sunt suportate.
CanBeInManyToMany valabil
CanBePrimaryEntityInRelationship valabil
CanBeRelatedEntityInRelationship valabil
CanChangeHierarchicalRelationship invalid Întotdeauna false, relațiile ierarhice nu sunt susținute.
CanChangeTrackingBeEnabled invalid Întotdeauna "fals", urmărirea modificărilor și valorile de audit nu sunt suportate.
CanCreateAttributes valabil
CanCreateCharts invalid Întotdeauna fals
CanCreateForms valabil
CanCreateViews valabil
CanEnableSyncToExternalSearchIndex invalid Întotdeauna fals
Poate modificaSetări suplimentare valabil
CanTriggerWorkflow invalid Întotdeauna false, fluxurile de lucru nu pot fi declanșate.
ChangeTrackingEnabled invalid Întotdeauna fals
CollectionSchemaName valabil
DaysSinceRecordLastModified invalid Întotdeauna nul sau 0
Descriere valabil
DisplayCollectionName valabil
Nume afișat valabil
EnforceStateTransitions invalid StateCode și Status nu sunt suportate.
EntityColor valabil
EntityHelpUrl valabil
EntityHelpUrlEnabled valabil
EntitySetName valabil
Date de extensie invalid Proprietate perimată
S-a schimbat valabil
IconLargeName valabil
IconMediumName valabil
IconSmallName valabil
IntroducedVersion valabil
EsteActivitate invalid Întotdeauna fals, activitățile nu sunt susținute.
IsActivityParty invalid Întotdeauna fals
IsAIRUpdat invalid Perimat
IsAuditEnabled invalid Întotdeauna fals, auditarea nu este susținută.
IsAvailableOffline invalid Întotdeauna este fals, utilizarea offline nu este suportată.
IsBusinessProcessEnabled invalid Întotdeauna fals, procesele de afaceri nu sunt suportate.
IsChildEntity invalid Întotdeauna fals, toate tabelele virtuale sunt deținute de organizație.
IsConnectionsEnabled valabil
IsCustomEntity valabil
EstePersonalizabil valabil
IsDocumentManagementEnabled valabil
IsDocumentRecommendationsEnabled invalid Întotdeauna fals, această nouă funcție nu este suportată.
IsDuplicateDetectionEnabled invalid Întotdeauna fals, dar detectarea duplicatelor poate fi efectuată la sursa de date.
IsEnabledForCharts limitat Numai pentru clauzele Fetch acceptate.
IsEnabledForTrace valabil
IsImportable valabil
IsInteractionCentricEnabled valabil
IsIntersect valabil
IsKnowledgeManagementEnabled invalid Întotdeauna fals, integrarea managementului cunoștințelor nu este suportată.
IsMailMergeEnabled valabil
IsManaged valabil
IsMappable valabil
IsOfflineInMobileClient invalid Întotdeauna fals, valorile tabelelor virtuale nu sunt stocate în cache pentru utilizare offline.
IsOneNoteIntegrationEnabled valabil
IsOptimisticConcurrencyEnabled invalid Întotdeauna fals, concurența trebuie implementată în sursa de date.
EstePrivat valabil
IsQuickCreateEnabled valabil
IsReadOnlyInMobileClient valabil
IsRenameable valabil
IsSLAEnabled invalid Întotdeauna fals
IsStateModelAware invalid
IsValidForAdvancedFind valabil
IsValidForQueue valabil
IsVisibleInMobile valabil
IsVisibleInMobileClient valabil
Chei invalid Cheile alternative nu sunt suportate
LogicalCollectionName valabil
Nume logic valabil
MulteCăCăMulteRelații valabil
ManyToOneRelationships valabil Nu este acceptat între două tabele virtuale.
MetadataId valabil
MobileOfflineFiltre invalid Întotdeauna este fals, utilizarea offline nu este suportată.
ObjectTypeCode valabil
Relații OneToManyRelationships valabil
OwnershipType invalid Întotdeauna deținut de organizație
PrimaryIdAttribute valabil
PrimaryImageAttribute valabil
PrimaryNameAttribute valabil
Privilegii invalid
RecurrenceBaseEntityLogicalName invalid
ReportViewName invalid
Nume schemă valabil
SyncToExternalSearchIndex invalid

Modificări de comportament ale proprietății definiției coloanei

Tabelul următor explică cum se schimbă comportamentul proprietăților standard AttributeMetadata atunci când le aplici tabelelor virtuale. Unele proprietăți nu sunt valabile pentru tabele virtuale, în timp ce altele au un scop sau o valoare limitată.

Proprietatea Metadate Se aplică? Note
Număr de coloană invalid
DeprecatedVersion valabil
Descriere valabil
Nume afișat valabil
EntityLogicalName valabil
Date de extensie invalid
S-a schimbat valabil
MoșteneșteDe la valabil
IntroducedVersion valabil
IsAuditEnabled invalid Întotdeauna fals, auditarea nu este susținută.
IsCustomAttribute valabil
EstePersonalizabil valabil
IsFilterable valabil
IsGlobalFilterEnabled valabil
IsLogical valabil
IsManaged valabil
IsPrimaryId valabil
IsPrimaryName valabil
IsRenameable valabil
IsSearchable valabil
IsSecured invalid Întotdeauna fals, securitatea la nivel de teren nu este susținută.
IsSortableEnabled valabil
IsValidForAdvancedFind valabil
IsValidForCreate valabil
IsValidForRead valabil
IsValidForUpdate valabil
LinkedAttributeId valabil
Nume logic valabil
MetadataId valabil
Nivel necesar valabil
Nume schemă valabil
SourceType invalid Întotdeauna 0, valorile calculate sau rollup nu sunt suportate.

Vedeți și

Introducere în entitățile virtuale
Furnizori de date de tabele virtuale personalizate
Exemplu: Plug-in generic furnizor de date de tabel virtual