共用方式為


link-entity 元素

聯結與 實體連結實體 相關的資料表,以傳回包含結果的其他資料行。 也與 篩選 元素一起使用,以 對相關表格中的欄值套用條件

瞭解如何使用 FetchXml 聯結資料表

範例

下列範例顯示 link-entity 搭配不同類型的關聯性使用。

多對一關係

此查詢會根據帳戶記錄中的 PrimaryContactId 查閱資料行,從帳戶連絡人資料表傳回資料:

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

一對多關係

此查詢會根據連絡人account_primary_contact一對多關係,從連絡人帳戶資料表傳回資料。

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

多對多關係

此查詢會使用teammembership_association多對多關係,從 SystemUserTeam 資料表傳回資料。

<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

名稱 Required? Description
name Yes 相關資料表的邏輯名稱。
to 父元素中資料行的邏輯名稱, 與屬性中 from 指定的相關資料表資料行相符。 雖然技術上不需要,但通常會使用此屬性。
from 相關表格 符合屬性中 to 指定直欄的直欄邏輯名稱。 雖然技術上不需要,但通常會使用此屬性。
alias 代表相關資料表的名稱。 如果您未設定別名,則會為您產生別名,以確保所有資料行都有唯一的名稱,但您將無法使用該別名來參考擷取 XML 其他部分中的連結實體。 自動產生的別名使用模式 {LogicalName}+{N},其中 N 是從 1 開始的擷取 XML 中連結實體的序號。
link-type 連結使用類型。 預設行為是 內部瞭解連結類型選項
intersect 表示 用 link-entity 來聯結資料表,且不傳回任何資料行,通常是針對多對多關聯性。 此屬性的存在不會變更查詢執行。 當您聯結表格時,您可以將此屬性新增至您的 link-entity 屬性,但不要包含任何 屬性元素 ,以顯示這是有意為之。

使用和fromto屬性

最好同時設定 和 fromto 屬性的值。 這兩個屬性通常用來明確定義要比對的資料行。 不過,技術上不需要 and fromto 屬性。

備註

如果您不使用這些屬性中的任何一個,並且兩個資料表之間存在系統多對多關聯性,則 Dataverse 會使用該關聯性選取適當的索引鍵值。

如果您只指定其中一個 fromto 屬性,Dataverse 會嘗試使用兩個資料表之間的關聯性結構描述定義來找出正確的關聯性。

否則,您會收到下列錯誤:

法典: 0x80041102
訊息: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.

例如,這兩個查詢都使用 systemuser團隊表格之間的teammembership_association多對多關係。 在這種情況下,Dataverse 可以計算出 fromto 屬性,而指定交集資料表的 則 link-entity 不需要。

指定所有屬性

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

讓 Dataverse 選擇

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

用於 link-type 對傳回的記錄套用篩選器。 下表說明有效 link-type 值:

名稱 Description
inner Default. 將結果限制為兩個表格中具有相符值的資料列。
outer 包含父元素中沒有相符值的結果。
any 濾芯內使用它。 將結果限制為連結實體中具有任何相符列的父列。 瞭解如何使用 any 來篩選相關資料表上的值
not any 濾芯內使用它。 將結果限制為連結實體中沒有相符列的父列。 瞭解如何使用 not any 來篩選相關資料表上的值
all 濾芯內使用它。 將結果限制為父列,其中鏈結實體中存在具有相 from 符欄值的列,但 這些相符列都不 滿足為此鏈結實體定義的其他篩選器。 您需要 反轉 其他篩選器,以尋找父列,其中每個相符的連結實體列 滿足一些其他準則。 瞭解如何使用 all 來篩選相關資料表上的值
not all 濾芯內使用它。 將結果限制為連結實體中具有任何相符列的父列。 此連結類型相當於 any 儘管名稱。 瞭解如何使用 not all 來篩選相關資料表上的值
exists 它的變體 inner 可以提供性能優勢。 在子句中使用 whereEXISTS 條件。 當結果中不需要父列的多個副本時,請使用此選項。 進一步了解存在和
in 它的變體 inner 可以提供性能優勢。 在子句中使用 whereIN 條件。 當結果中不需要父列的多個副本時,請使用此選項。 進一步了解存在和
matchfirstrowusingcrossapply 它的變體 inner 可以提供性能優勢。 當連結實體中只有相符資料列的單一範例就足夠了,而且不需要結果中父資料列的多個複本時,請使用此類型。 進一步瞭解 matchfirstrowusingcrossapply

父元素

名稱 Description
實體 指定 提取元素的子元素,即查詢的「父實體」。 只允許一個實體。
連結實體 聯結與 實體連結實體 相關的資料表,以傳回更多包含結果的資料行。

子專案

名稱 發生次數 Description
所有屬性 0 或 1 表示會傳回每一列的所有非空值資料行值。 這與不添加任何 屬性元素相同。 在大多數情況下,我們不建議使用此元素。
屬性 0 或多個 指定實體或連結實體中的資料行,以搭配查詢傳回。
0 或多個 指定結果列的排序順序。
連結實體 0 或多個 聯結與 實體連結實體 相關的資料表,以傳回更多包含結果的資料行。
篩選 0 或 1 指定要套用至查詢的 實體連結實體 的複雜條件。