Partajați prin


element de legare-entitate

Alătură un tabel asociat entității sau entității de legătură pentru a returna coloane suplimentare cu rezultatul. Utilizat și cu elemente de filtrare pentru a aplica condiții pentru valorile de coloană din tabelele asociate.

Aflați cum să asociați tabele utilizând FetchXml.

Exemple

Următoarele exemple arată utilizarea link-entity cu diferite tipuri de relații.

Relație mai-mulți-la-unu

Această interogare returnează date din tabelele de cont și de persoane de contact bazate pe coloana de căutare PrimaryContactId din înregistrarea contului:

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

Relație unu-la-mai-mulți

Această interogare returnează date din tabelele de persoane de contact și de cont bazate pe relația Persoană de contact account_primary_contact unu-la-mai-mulți.

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

Relație mai-mulți-la-mai-mulți

Această interogare returnează date din tabelele SystemUser și Team utilizând teammembership_association relație mai-mulți-la-mai-mulți.

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

Atribute

Nume Obligatoriu? Descriere
name Da Numele logic al tabelului asociat.
to Nu Numele logic al coloanei din elementul părinte care se potrivește cu coloana de tabel asociată specificată from în atribut. Deși nu este necesar din punct de vedere tehnic, acest atribut este utilizat de obicei.
from Nu Numele logic al coloanei din tabelul asociat care corespunde coloanei to specificate în atribut. Deși nu este necesar din punct de vedere tehnic, acest atribut este utilizat de obicei.
alias Nu Reprezintă numele tabelului asociat. Dacă nu setați un alias, va fi generat unul pentru dvs., pentru a vă asigura că toate coloanele au nume unice, dar nu veți putea utiliza acel alias pentru a face referire la entitatea de legătură din alte părți ale XML de preluare. Aliasurile generate automat utilizează modelul {LogicalName}+{N}, unde N este numărul secvențial al entității link din preluarea XML începând de la 1.
link-type Nu Tipul de utilizare a linkului. Comportamentul implicit este interior. Aflați despre opțiunile de tip link
intersect Nu Indică faptul că este utilizat pentru asocierea link-entity tabelelor și pentru a nu returna coloane, de obicei pentru o relație mai-mulți-la-mai-mulți. Existența acestui atribut nu modifică executarea interogării. Este posibil să adăugați acest atribut la tabelul dvs link-entity . atunci când asociați un tabel, dar nu includeți niciun element atribut pentru a arăta că acest lucru este intenționat.

Utilizarea from și to atributele

Se recomandă să setați valori atât pentru atribute, cât from și to pentru atribute. Ambele atribute sunt utilizate de obicei pentru a defini în mod explicit coloanele de potrivit. Cu toate acestea, atributele from și to nu sunt necesare din punct de vedere tehnic.

Notă

Dacă nu utilizați niciuna dintre aceste atribute și există o relație de tip mai mulți-la-mai-mulți între cele două tabele, Dataverse selectează valorile cheie corespunzătoare utilizând acea relație.

Dacă specificați doar unul dintre from atributele sau to , Dataverse încearcă să găsească relația corectă utilizând definițiile schemei de relații dintre cele două tabele.

Altfel, veți primi următoarea eroare:

Cod: 0x80041102
Mesaj: 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.

De exemplu, ambele interogări utilizează teammembership_association relație mai-mulți-la-mai-mulți între tabelele de sistem și de echipă . În acest caz, Dataverse poate rezolva from și atributele și tolink-entity care specifică tabelul de intersecție nu este necesar.

Specificarea tuturor atributelor

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

Permiteți ca Dataverse să aleagă

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

Se utilizează link-type pentru a aplica filtre pentru înregistrările returnate. Următorul tabel descrie valorile valide link-type :

Nume Descriere
inner Implicit. Restricționează rezultatele la rândurile cu valori corespondente din ambele tabele.
outer Include rezultate din elementul părinte care nu au o valoare corespondentă.
any Utilizați-l într-un element de filtrare. Restricționează rezultatele la rândurile părinte cu orice rânduri corespondente din entitatea legată. Aflați cum să utilizați any pentru a filtra valorile din tabelele asociate
not any Utilizați-l într-un element de filtrare. Restricționează rezultatele la rândurile părinte fără rânduri corespondente în entitatea legată. Aflați cum să utilizați not any pentru a filtra valorile din tabelele asociate
all Utilizați-l într-un element de filtrare. Restricționează rezultatele la rândurile părinte în care există rânduri cu valoare de coloană corespondentă from în entitatea link, dar niciunul dintre rândurile care se potrivesc nu satisfac filtrele suplimentare definite pentru această entitate de legătură. Trebuie să inversați filtrele suplimentare pentru a găsi rândurile părinte în care fiecare rând de entitate link care se potrivește îndeplinește unele criterii suplimentare. Aflați cum să utilizați all pentru a filtra valorile din tabelele asociate
not all Utilizați-l într-un element de filtrare. Restricționează rezultatele la rândurile părinte cu orice rânduri corespondente din entitatea legată. Acest tip de link este echivalent cu any , în ciuda numelui. Aflați cum să utilizați not all pentru a filtra valorile din tabelele asociate
exists O variantă care inner poate oferi beneficii de performanță. Utilizează o condiție EXISTS în where clauză. Utilizați-o atunci când nu sunt necesare mai multe copii ale rândului părinte în rezultate. Aflați mai multe despre există și în
in O variantă care inner poate oferi beneficii de performanță. Utilizează o condiție IN în where clauză. Utilizați-o atunci când nu sunt necesare mai multe copii ale rândului părinte în rezultate. Aflați mai multe despre există și în
matchfirstrowusingcrossapply O variantă care inner poate oferi beneficii de performanță. Utilizați acest tip atunci când doar un singur exemplu de rând potrivit din entitatea legată este suficient și nu sunt necesare mai multe copii ale rândului părinte din rezultate. Aflați mai multe despre potrivireafirstrowusingcrossapply

Elemente părinte

Nume Descriere
entitate Specifică elementul fiu pentru un element preluat, "entitatea părinte" pentru interogare. Este permisă o singură entitate.
entitate link Alătură un tabel asociat entității sau entității de legare pentru a returna mai multe coloane cu rezultatul.

Elemente fiu

Nume Apariţii Descriere
toate atributele 0 sau 1 Indică faptul că se returnează toate valorile de coloană care nu sunt nule pentru fiecare rând. Este la fel ca adăugarea niciunui element atribut. Nu recomandăm utilizarea acestui element în majoritatea cazurilor.
atribut 0 sau mai multe Specifică o coloană dintr-o entitate sau o entitate de legătură de returnat cu o interogare.
comanda 0 sau mai multe Specifică o ordine de sortare pentru rândurile rezultatelor.
entitate link 0 sau mai multe Alătură un tabel asociat entității sau entității de legare pentru a returna mai multe coloane cu rezultatul.
filtru 0 sau 1 Specificați condiții complexe pentru o entitate sau o entitate de legătură de aplicat la o interogare.