Zdieľať cez


prvok prepojenia – entita

Spojí tabuľku súvisiacu s entitou alebo entitu prepojenia a vráti ďalšie stĺpce s výsledkom. Používa sa tiež s prvkami filtrana použitie podmienok na hodnoty stĺpcov v súvisiacich tabuľkách.

Naučte sa spájať tabuľky pomocou jazyka FetchXml.

Príklady

Nasledujúce príklady zobrazujú použitie link-entity s rôznymi typmi vzťahov.

Vzťah viacerých s jednou

Tento dotaz vráti údaje z konta a kontaktných tabuliek na základe stĺpca vyhľadávania PrimaryContactId v zázname konta:

<fetch>
  <entity name='account'>
    <attribute name='name' />
    <link-entity name='contact'
      from='contactid'
      to='primarycontactid'
      link-type='inner'
      alias='contact'>
      <attribute name='fullname' />
    </link-entity>
  </entity>
</fetch>

Vzťah typu One-to-many

Tento dotaz vráti údaje z tabuliek kontaktov a kont na základe vzťahu typu Contact account_primary_contact One-to-many.

<fetch>
  <entity name='contact'>
    <attribute name='fullname' />
    <link-entity name='account' 
     from='primarycontactid' 
     to='contactid' 
     alias='account'>
      <attribute name='name' />
    </link-entity>
  </entity>
</fetch>

Vzťah typu many-to-many

Tento dotaz vráti údaje z tabuliek SystemUser a Team pomocou teammembership_association vzťahu typu many-to-many.

<fetch>
  <entity name='systemuser'>
    <attribute name='fullname' />
    <link-entity name='teammembership'
      from='systemuserid'
      to='systemuserid' >
      <link-entity name='team'
        from='teamid'
        to='teamid'
        link-type='inner'
        alias='team'>
        <attribute name='name' />
      </link-entity>
    </link-entity>
  </entity>
</fetch>

Atribúty

Meno Povinné? Popis
name Áno Logický názov súvisiacej tabuľky.
to Nie Logický názov stĺpca v nadradenom prvku , ktorý sa má zhodovať so stĺpcom súvisiacej tabuľky zadaným v atribúte from . Aj keď to nie je technicky povinné, tento atribút sa zvyčajne používa.
from Nie Logický názov stĺpca zo súvisiacej tabuľky, ktorý zodpovedá stĺpcu zadanému v atribúte to . Aj keď to nie je technicky povinné, tento atribút sa zvyčajne používa.
alias Nie Predstavuje názov súvisiacej tabuľky. Ak nenastavíte alias, vygeneruje sa jeden, aby sa zabezpečilo, že všetky stĺpce budú mať jedinečné názvy, ale nebudete môcť použiť tento alias na odkazovanie na entitu prepojenia v iných častiach načítaného súboru XML. Automaticky generované aliasy používajú vzor {LogicalName}+{N}, čo N je sekvenčné číslo entity link-entity v načítanom xml formáte od 1.
link-type Nie Typ použitia prepojenia. Predvolené správanie je vnútorné. Ďalšie informácie o možnostiach typu prepojenia
intersect Nie Označuje, že tabuľka sa link-entity používa na spojenie tabuliek a nevráti žiadne stĺpce, zvyčajne pre vzťah typu many-to-many. Existencia tohto atribútu nezmení vykonanie dotazu. Tento atribút môžete pridať do svojho link-entity pri pripájaní k tabuľke, ale nezahŕňajte žiadne prvky atribútu , aby ste ukázali, že je to zámerné.

Používanie from a to atribútov

Odporúča sa nastaviť hodnoty pre atribúty aj fromto . Oba tieto atribúty sa zvyčajne používajú na explicitné definovanie stĺpcov, ktoré sa majú zhodovať. Atribúty a to sa však from technicky nevyžadujú.

Poznámka

Ak nepoužívate žiadny z týchto atribútov a medzi oboma tabuľkami existuje vzťah typu system many-to-many, funkcia Dataverse vyberie vhodné hodnoty kľúča pomocou tohto vzťahu.

Ak zadáte len jeden z from atribútov alebo to , funkcia Dataverse sa pokúsi zistiť správny vzťah pomocou definícií schémy vzťahu medzi týmito dvoma tabuľkami.

V opačnom prípade sa zobrazí nasledujúca chyba:

Kód: 0x80041102
Správa: No system many-to-many relationship exists between <table A> and <table B>. If attempting to link through a custom many-to-many relationship ensure that you provide the from and to attributes.

Oba tieto dotazy napríklad používajú teammembership_association vzťah typu many-to-many medzi systémovými a tímovými tabuľkami. V tomto prípade môže Dataverse vyriešiť from atribúty a to a link-entity že hodnota určuje, že tabuľka prieniku nie je potrebná.

Zadanie všetkých atribútov

<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity
name="teammembership"
from="systemuserid"
to="systemuserid"
intersect="true"
>
<link-entity
name="team"
from="teamid"
to="teamid"
link-type="inner"
alias="team"
>
<attribute name="name" />
</link-entity>
</link-entity>
</entity>
</fetch>

Nechať výber položky Dataverse

<fetch top="2">
<entity name="systemuser">
<attribute name="fullname" />
<link-entity name="team" alias="team">
<attribute name="name" />
</link-entity>
</entity>
</fetch>

Použite link-type na použitie filtrov vo vrátených záznamoch. Nasledujúca tabuľka popisuje platné link-type hodnoty:

Meno Popis
inner Predvolené. Obmedzuje výsledky na riadky so zhodnými hodnotami v oboch tabuľkách.
outer Zahrnie výsledky z nadradeného prvku, ktorý nemá zodpovedajúcu hodnotu.
any Použite ju v rámci prvku filtra. Obmedzuje výsledky na nadradené riadky s ľubovoľnými zhodnými riadkami v prepojenej entite. Naučte sa používať any na filtrovanie hodnôt v súvisiacich tabuľkách
not any Použite ju v rámci prvku filtra. Obmedzuje výsledky na nadradené riadky bez zhodných riadkov v prepojenej entite. Naučte sa používať not any na filtrovanie hodnôt v súvisiacich tabuľkách
all Použite ju v rámci prvku filtra. Obmedzuje výsledky na nadradené riadky, v ktorých riadky so zodpovedajúcou from hodnotou stĺpca existujú v entite prepojenia, ale žiadny z týchto zodpovedajúcich riadkov nespĺňa dodatočné filtre definované pre túto entitu prepojenia. Je potrebné invertovať ďalšie filtre, aby ste našli nadradené riadky, kde každý zodpovedajúci riadok entity prepojenia spĺňa niektoré ďalšie kritériá. Naučte sa používať all na filtrovanie hodnôt v súvisiacich tabuľkách
not all Použite ju v rámci prvku filtra. Obmedzuje výsledky na nadradené riadky s ľubovoľnými zhodnými riadkami v prepojenej entite. Tento typ prepojenia je ekvivalentný any s napriek názvu. Naučte sa používať not all na filtrovanie hodnôt v súvisiacich tabuľkách
exists Variant, inner ktorý môže prinášať výhody výkonu. V klauzule použije podmienku whereEXISTS. Použite ho, ak vo výsledkoch nie sú potrebné viaceré kópie nadradeného riadka. Ďalšie informácie o existujúcich aplikáciách a aplikáciách
in Variant, inner ktorý môže prinášať výhody výkonu. Použije podmienku IN v klauzule where . Použite ho, ak vo výsledkoch nie sú potrebné viaceré kópie nadradeného riadka. Ďalšie informácie o existujúcich aplikáciách a aplikáciách
matchfirstrowusingcrossapply Variant, inner ktorý môže prinášať výhody výkonu. Tento typ použite, ak je dostatočný iba jeden príklad zhodného riadka z prepojenej entity a viaceré kópie nadradeného riadka vo výsledkoch nie sú potrebné. Ďalšie informácie o zhodáchpríkladypríkladom

Nadradené prvky

Meno Popis
entita Určuje podriadený prvok pre prvok načítania, "nadradená entita" pre dotaz. Povolená je len jedna entita.
link-entity Spojí tabuľku súvisiacu s entitou alebo entitu prepojenia a vráti viac stĺpcov s výsledkom.

Podradené prvky

Meno Výskyty Popis
všetky atribúty 0 alebo 1 Označuje, že pre každý riadok sa vrátia všetky hodnoty stĺpcov, ktoré nie sú null. Je to rovnaké ako pridávanie žiadnych prvkov atribútu. Vo väčšine prípadov tento prvok neodporúčame používať.
vlastnosť 0 alebo viac Určuje stĺpec z entity alebo prepojenie-entity , ktoré sa majú vrátiť s dotazom.
objednávka 0 alebo viac Určuje spôsob zoradenia riadkov výsledkov.
link-entity 0 alebo viac Spojí tabuľku súvisiacu s entitou alebo entitu prepojenia a vráti viac stĺpcov s výsledkom.
filter 0 alebo 1 Zadajte komplexné podmienky pre entitu alebo entitu prepojenia , ktoré sa majú použiť na dotaz.