Notă
Accesul la această pagină necesită autorizare. Puteți încerca să vă conectați sau să modificați directoarele.
Accesul la această pagină necesită autorizare. Puteți încerca să modificați directoarele.
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 lanull. Î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