Sdílet prostřednictvím


link-entity – element

Spojí tabulku související s entitou nebo entitou propojení a vrátí další sloupce s výsledkem. Používá se také s elementy filtru k použití podmínek pro hodnoty sloupců v souvisejících tabulkách.

Zjistěte, jak spojit tabulky pomocí FetchXml.

Examples

Následující příklady ukazují použití link-entity s různými typy relací.

Relace M:1

Tento dotaz vrátí data z tabulek účtů a kontaktů na základě vyhledávacího sloupce PrimaryContactId v záznamu účtu:

<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>

Relace 1:N

Tento dotaz vrátí data z tabulek kontaktů a účtů na základě account_primary_contact relace 1:N.

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

Relace M:N

Tento dotaz vrátí data z tabulek SystemUser a Team pomocí teammembership_association relace M:N.

<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>

Attributes

Název Povinné? Description
name Ano Logický název související tabulky.
to Ne Logický název sloupce v nadřazené elementu , který se shoduje se souvisejícím sloupcem tabulky zadaným v atributu from . I když není technicky povinný, tento atribut se obvykle používá.
from Ne Logický název sloupce ze související tabulky, který odpovídá sloupci zadanému v atributu to . I když není technicky povinný, tento atribut se obvykle používá.
alias Ne Představuje název související tabulky. Pokud alias nenastavíte, jeden se vygeneruje, aby všechny sloupce měly jedinečné názvy, ale tento alias nebudete moct použít k odkazování na entitu propojení v jiných částech xml načtení. Automaticky generované aliasy používají vzor {LogicalName}+{N}, kde N je pořadové číslo entity link-entity v fetch XML počínaje 1.
link-type Ne Typ použití odkazu. Výchozí chování je vnitřní. Další informace o možnostech typu odkazu
intersect Ne Označuje, že link-entity se používá ke spojení tabulek a nevrací žádné sloupce, obvykle pro relaci M:N. Existence tohoto atributu nemění provádění dotazu. Tento atribut můžete přidat do tabulky link-entity , ale nezahrnujte žádné prvky atributů , které by ukázaly, že je to úmyslné.

Použití from a to atributy

Nejlepší je nastavit hodnoty pro from oba atributy.to Oba tyto atributy se obvykle používají k explicitní definici sloupců, které se mají shodovat. from to Atributy ale nejsou technicky povinné.

Poznámka:

Pokud nepoužíváte některý z těchto atributů a mezi těmito dvěma tabulkami existuje relace M:N, služba Dataverse vybere odpovídající hodnoty klíče pomocí této relace.

Pokud zadáte pouze jeden z from atributů nebo to atributů, dataverse se pokusí zjistit správnou relaci pomocí definic schématu relací mezi těmito dvěma tabulkami.

V opačném případě se zobrazí následující chyba:

Kód: 0x80041102
Zprá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 tyto dotazy například používají relaci M :N mezi systémovým uživatelem a týmovými tabulkami teammembership_association. V tomto případě může Dataverse pracovat s fromto atributy a link-entity to, které určuje protínací tabulku, není nutná.

Zadání všech atributů

<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>

Povolit funkci Dataverse zvolit

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

Slouží link-type k použití filtrů u vrácených záznamů. Platné hodnoty jsou popsány v link-type následující tabulce:

Název Description
inner Výchozí. Omezí výsledky na řádky s odpovídajícími hodnotami v obou tabulkách.
outer Zahrne výsledky z nadřazeného elementu, který nemá odpovídající hodnotu.
any Použijte ho v elementu filtru. Omezí výsledky na nadřazené řádky s libovolnými odpovídajícími řádky v propojené entitě. Naučte se filtrovat any hodnoty v souvisejících tabulkách.
not any Použijte ho v elementu filtru. Omezí výsledky na nadřazené řádky bez odpovídajících řádků v propojené entitě. Naučte se filtrovat not any hodnoty v souvisejících tabulkách.
all Použijte ho v elementu filtru. Omezí výsledky na nadřazené řádky, ve kterých v entitě propojení existují řádky s odpovídající from hodnotou sloupce, ale žádný z těchto odpovídajících řádků nevyhovuje dalším filtrům definovaným pro tuto entitu propojení. Pokud chcete najít nadřazené řádky, ve kterých každý odpovídající řádek entity propojení splňuje některá další kritéria, musíte převrátit další filtry. Naučte se filtrovat all hodnoty v souvisejících tabulkách.
not all Použijte ho v elementu filtru. Omezí výsledky na nadřazené řádky s libovolnými odpovídajícími řádky v propojené entitě. Tento typ odkazu je ekvivalentní any navzdory názvu. Naučte se filtrovat not all hodnoty v souvisejících tabulkách.
exists Varianta inner , která může poskytovat výhody výkonu. Používá podmínku EXISTS v klauzuli where . Tuto možnost použijte v případě, že ve výsledcích není potřeba více kopií nadřazeného řádku. Další informace o existenci a in
in Varianta inner , která může poskytovat výhody výkonu. Použije podmínku whereIN v klauzuli. Tuto možnost použijte v případě, že ve výsledcích není potřeba více kopií nadřazeného řádku. Další informace o existenci a in
matchfirstrowusingcrossapply Varianta inner , která může poskytovat výhody výkonu. Tento typ použijte, pokud stačí jenom jeden příklad odpovídajícího řádku z propojené entity a ve výsledcích není potřeba více kopií nadřazeného řádku. Další informace o matchfirstrowusingcrossapply

Nadřazené prvky

Název Description
entita Určuje podřízený prvek pro element fetch, nadřazenou entitu pro dotaz. Je povolená pouze jedna entita.
link-entity Spojí tabulku související s entitou nebo entitou propojení a vrátí další sloupce s výsledkem.

Podřízené prvky

Název Výskyty Description
all-attributes 0 nebo 1 Označuje, že se vrátí všechny hodnoty sloupců, které nejsou null pro každý řádek. Je to stejné, jako když nepřidávejte žádné prvky atributů. Tento prvek nedoporučujeme ve většině případů používat.
atribut 0 nebo n Určuje sloupec z entity nebo entity link-entity , který se má vrátit pomocí dotazu.
objednávka 0 nebo n Určuje pořadí řazení pro řádky výsledků.
link-entity 0 nebo n Spojí tabulku související s entitou nebo entitou propojení a vrátí další sloupce s výsledkem.
filtr 0 nebo 1 Zadejte složité podmínky pro entitu nebo entitu link-entity , které se mají použít pro dotaz.