Udostępnij przez


link-entity, element

Łączy tabelę powiązaną z jednostką lub jednostką łącza , aby zwrócić dodatkowe kolumny z wynikiem. Używane również z elementami filtru do stosowania warunków dotyczących wartości kolumn w powiązanych tabelach.

Dowiedz się, jak łączyć tabele przy użyciu narzędzia FetchXml.

Przykłady

W poniższych przykładach pokazano użycie z link-entity różnymi typami relacji.

Relacja wiele do jednego

To zapytanie zwraca dane z tabel konta i kontaktów na podstawie kolumny odnośnika PrimaryContactId w rekordzie 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>

Relacja jeden do wielu

To zapytanie zwraca dane z tabel kontaktów i kont na podstawie relacji Kontakt account_primary_contact relacji jeden do wielu.

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

Relacja wiele do wielu

To zapytanie zwraca dane z tabel SystemUser i Team przy użyciu relacji teammembership_association wiele do wielu.

<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

Name Wymagane? Description
name Tak Nazwa logiczna powiązanej tabeli.
to Nie. Nazwa logiczna kolumny w elemercie nadrzędnym zgodna z powiązaną kolumną tabeli określoną w atrybucie from . Chociaż nie jest to technicznie wymagane, ten atrybut jest zwykle używany.
from Nie. Logiczna nazwa kolumny z powiązanej tabeli, która pasuje do kolumny określonej w atrybucie to . Chociaż nie jest to technicznie wymagane, ten atrybut jest zwykle używany.
alias Nie. Reprezentuje nazwę powiązanej tabeli. Jeśli nie ustawisz aliasu, zostanie wygenerowany, aby upewnić się, że wszystkie kolumny mają unikatowe nazwy, ale nie będzie można używać tego aliasu do odwołowania się do jednostki łącza w innych częściach pobierania kodu XML. Aliasy generowane automatycznie używają wzorca {LogicalName}+{N}, gdzie N jest sekwencyjną liczbą jednostki link-entity w pliku XML pobierania, począwszy od 1.
link-type Nie. Typ użycia łącza. Domyślne zachowanie jest wewnętrzne. Dowiedz się więcej o opcjach typu linków
intersect Nie. Wskazuje, że link-entity element jest używany do łączenia tabel i nie zwraca żadnych kolumn, zazwyczaj w przypadku relacji wiele do wielu. Istnienie tego atrybutu nie zmienia wykonywania zapytania. Ten atrybut można dodać do link-entity elementu podczas dołączania do tabeli, ale nie zawiera żadnych elementów atrybutów , aby pokazać, że jest to zamierzone.

Używanie from atrybutów i to

Najlepiej ustawić wartości zarówno dla atrybutów, jak from i to . Oba te atrybuty są zwykle używane do jawnego definiowania kolumn do dopasowania. Atrybuty from i to nie są jednak technicznie wymagane.

Uwaga / Notatka

Jeśli nie używasz jednego z tych atrybutów, a między dwiema tabelami istnieje relacja wiele-do-wielu systemu, usługa Dataverse wybiera odpowiednie wartości klucza przy użyciu tej relacji.

Jeśli określisz tylko jeden z from atrybutów lub to , usługa Dataverse próbuje ustalić poprawną relację przy użyciu definicji schematu relacji między dwiema tabelami.

W przeciwnym razie zostanie wyświetlony następujący błąd:

Kod: 0x80041102
Wiadomość: 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.

Na przykład oba te zapytania używają relacji teammembership_association wiele-do-wielu między tabelami systemuser i team . W takim przypadku usługa Dataverse może wypracować from atrybuty i to i, które link-entity określają tabelę przecinającą, nie jest konieczna.

Określ wszystkie atrybuty

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

Zezwalaj usłudze Dataverse na wybieranie

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

Użyj polecenia link-type , aby zastosować filtry dla zwracanych rekordów. W poniższej tabeli opisano prawidłowe link-type wartości:

Name Description
inner Default. Ogranicza wyniki do wierszy z pasującymi wartościami w obu tabelach.
outer Zawiera wyniki z elementu nadrzędnego, który nie ma pasującej wartości.
any Użyj tego w elemecie filtru. Ogranicza wyniki do wierszy nadrzędnych z dowolnymi pasującymi wierszami w połączonej jednostce. Dowiedz się, jak filtrować any wartości w powiązanych tabelach
not any Użyj tego w elemecie filtru. Ogranicza wyniki do wierszy nadrzędnych bez pasujących wierszy w połączonej jednostce. Dowiedz się, jak filtrować not any wartości w powiązanych tabelach
all Użyj tego w elemecie filtru. Ogranicza wyniki do wierszy nadrzędnych, w których wiersze z pasującą from wartością kolumny istnieją w jednostce łącza, ale żaden z tych pasujących wierszy nie spełnia dodatkowych filtrów zdefiniowanych dla tej jednostki łącza. Należy odwrócić dodatkowe filtry, aby znaleźć wiersze nadrzędne, w których każdy pasujący wiersz jednostki łącza spełnia pewne dodatkowe kryteria. Dowiedz się, jak filtrować all wartości w powiązanych tabelach
not all Użyj tego w elemecie filtru. Ogranicza wyniki do wierszy nadrzędnych z dowolnymi pasującymi wierszami w połączonej jednostce. Ten typ łącza jest odpowiednikiem any pomimo nazwy. Dowiedz się, jak filtrować not all wartości w powiązanych tabelach
exists Wariant, inner który może zapewnić korzyści z wydajności. Używa warunku EXISTS w klauzuli where . Użyj tej funkcji, gdy wiele kopii wiersza nadrzędnego nie jest konieczne w wynikach. Dowiedz się więcej o tym, jak istnieje i w
in Wariant, inner który może zapewnić korzyści z wydajności. Używa warunku IN w klauzuli where . Użyj tej funkcji, gdy wiele kopii wiersza nadrzędnego nie jest konieczne w wynikach. Dowiedz się więcej o tym, jak istnieje i w
matchfirstrowusingcrossapply Wariant, inner który może zapewnić korzyści z wydajności. Tego typu należy użyć, gdy wystarczy tylko jeden przykład pasującego wiersza z połączonej jednostki, a wiele kopii wiersza nadrzędnego w wynikach nie jest konieczne. Dowiedz się więcej o matchfirstrowusingcrossapply

Elementy nadrzędne

Name Description
jednostka Określa element podrzędny dla elementu pobierania, "jednostkę nadrzędną" dla zapytania. Dozwolona jest tylko jedna jednostka.
link-jednostka Łączy tabelę powiązaną z jednostką lub jednostką łącza , aby zwrócić więcej kolumn z wynikiem.

Elementy podrzędne

Name Wystąpień Description
atrybuty all-attributes 0 lub 1 Wskazuje, że zwracane są wszystkie wartości kolumn innych niż null dla każdego wiersza. Jest to takie samo, jak dodawanie żadnych elementów atrybutów. W większości przypadków nie zalecamy używania tego elementu.
atrybut 0 lub wiele Określa kolumnę z jednostki lub jednostki łącza , która ma być zwracana za pomocą zapytania.
porządek 0 lub wiele Określa kolejność sortowania wierszy wyników.
link-jednostka 0 lub wiele Łączy tabelę powiązaną z jednostką lub jednostką łącza , aby zwrócić więcej kolumn z wynikiem.
filtr 0 lub 1 Określ złożone warunki dla jednostki lub jednostki łącza , które mają być stosowane do zapytania.