แชร์ผ่าน


องค์ประกอบ 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>

ความสัมพันธ์แบบกลุ่มต่อกลุ่ม

คิวรีนี้จะส่งกลับข้อมูลจากตาราง SystemUser และ Team โดยใช้ teammembership_association ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม

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

แอ ตทริ บิวต์

ชื่อ จำเป็นหรือไม่ คำอธิบาย
name ใช่ ชื่อทางตรรกะของตารางที่เกี่ยวข้อง
to ไม่ใช่ ชื่อตรรกะของคอลัมน์ในองค์ประกอบหลัก เพื่อให้ ตรงกับคอลัมน์ตารางที่เกี่ยวข้องที่ระบุใน from แอตทริบิวต์ ไม่จําเป็นต้องใช้ในทางเทคนิค แต่แอตทริบิวต์นี้มักใช้
from ไม่ใช่ ชื่อตรรกะของคอลัมน์ จาก ตารางที่เกี่ยวข้องซึ่งตรงกับคอลัมน์ที่ระบุใน to แอตทริบิวต์ ไม่จําเป็นต้องใช้ในทางเทคนิค แต่แอตทริบิวต์นี้มักใช้
alias ไม่ใช่ แสดงชื่อของตารางที่เกี่ยวข้อง ถ้าคุณไม่ได้ตั้งค่านามแฝงจะมีการสร้างชื่อให้คุณ เพื่อให้แน่ใจว่าคอลัมน์ทั้งหมดมีชื่อที่ไม่ซ้ํากัน แต่คุณจะไม่สามารถใช้นามแฝงนั้นเพื่ออ้างอิงเอนทิตีลิงก์ในส่วนอื่น ๆ ของ XML ที่ดึงมา นามแฝงที่สร้างขึ้นโดยอัตโนมัติใช้รูปแบบ {LogicalName}+{N}โดยเป็น N หมายเลขลําดับของ link-entity ใน fetch XML โดยเริ่มต้นจาก 1
link-type ไม่ใช่ ชนิดของการใช้ลิงก์ ลักษณะการทํางานเริ่มต้นอยู่ภายใน เรียนรู้เกี่ยวกับตัวเลือกชนิดลิงก์
intersect ไม่ใช่ ระบุว่า link-entity ถูกใช้เพื่อรวมตารางและไม่ส่งกลับคอลัมน์ใด ๆ โดยทั่วไปสําหรับความสัมพันธ์แบบกลุ่มต่อกลุ่ม การมีอยู่ของแอตทริบิวต์นี้จะไม่เปลี่ยนแปลงการดําเนินการคิวรี คุณอาจเพิ่มแอตทริบิวต์นี้ลงในของคุณ link-entity เมื่อคุณเข้าร่วมตาราง แต่ไม่มี องค์ประกอบของแอตทริบิวต์ ใดๆ เพื่อแสดงว่านี่คือความตั้งใจ

การใช้fromแอตทริบิวต์ และto

วิธีที่ดีที่สุดคือการตั้งค่าสําหรับทั้งfromแอตทริบิวต์ และto แอตทริบิวต์ทั้งสองนี้มักใช้เพื่อกําหนดคอลัมน์ให้ตรงกันอย่างชัดเจน อย่างไรก็ตาม from ไม่จําเป็นต้องมีแอตทริบิวต์ และ to ในทางเทคนิค

Note

  • สิ่งสําคัญคือคอลัมน์ที่ระบุใน from แอตทริบิวต์ และ to เป็นชนิดเดียวกัน การใช้คอลัมน์ชนิดอื่นไม่ได้รับการสนับสนุน เมื่อคอลัมน์ไม่ใช่ประเภทเดียวกัน โครงสร้างพื้นฐาน Dataverse อาจสามารถบังคับใช้การแปลงได้ แต่แนวทางปฏิบัตินี้อาจส่งผลให้ประสิทธิภาพลดลงอย่างมีนัยสําคัญ

  • ความหมายของfromแอตทริบิวต์ และ to ในคุณสมบัติ FetchXml คือค่าตรงข้ามของคุณสมบัติ LinkEntity.LinkFromAttributeName และ LinkEntity.LinkToAttributeName ที่สอดคล้องกันใช้เมื่อเขียนคิวรีโดยใช้ QueryExpression

หากคุณไม่ได้ใช้แอตทริบิวต์เหล่านี้อย่างใดอย่างหนึ่ง และความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่มของระบบอยู่ระหว่างสองตาราง Dataverse จะเลือกค่าคีย์ที่เหมาะสมโดยใช้ความสัมพันธ์นั้น

ถ้าคุณระบุหนึ่งใน from แอตทริบิวต์ หรือ to เท่านั้น 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.

ตัวอย่างเช่น ทั้งสองคิวรีใช้ความสัมพันธ์แบบกลุ่ม-ต่อ-กลุ่ม teammembership_association ระหว่างตาราง Systemuser และตารางทีม ในกรณีนี้ Dataverse สามารถทํางานตาม from แอตทริบิวต์ และ to และ 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 :

ชื่อ คำอธิบาย
inner ค่าเริ่มต้น จํากัดผลลัพธ์ให้เป็นแถวด้วยค่าที่ตรงกันในทั้งสองตาราง
outer รวมผลลัพธ์จากองค์ประกอบหลักที่ไม่มีค่าที่ตรงกัน
any ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง เรียนรู้วิธีใช้ any เพื่อกรองค่าในตารางที่เกี่ยวข้อง
not any ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักโดยไม่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง เรียนรู้วิธีใช้ not any เพื่อกรองค่าในตารางที่เกี่ยวข้อง
all ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีค่าคอลัมน์ที่ตรงกัน from อยู่ในเอนทิตีลิงก์ แต่ ไม่มีแถวที่ตรงกันเหล่านั้น ที่ตรงกับตัวกรองเพิ่มเติมที่กําหนดไว้สําหรับเอนทิตีลิงก์นี้ คุณจําเป็นต้อง สลับ ตัวกรองเพิ่มเติมเพื่อค้นหาแถวหลักที่ ทุก แถวของเอนทิตีลิงก์ที่ตรงกันตรงกับเกณฑ์เพิ่มเติมบางอย่าง เรียนรู้วิธีใช้ all เพื่อกรองค่าในตารางที่เกี่ยวข้อง
not all ใช้ข้อมูลนี้ภายในองค์ประกอบตัวกรอง จํากัดผลลัพธ์ให้เป็นแถวหลักที่มีแถวที่ตรงกันในเอนทิตีที่เชื่อมโยง ชนิดลิงก์นี้จะเทียบเท่ากับ any ชื่อ เรียนรู้วิธีใช้ not all เพื่อกรองค่าในตารางที่เกี่ยวข้อง
exists ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้เงื่อนไข EXISTS ใน where คําสั่งย่อย ใช้ข้อมูลนี้เมื่อไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์ เรียนรู้เพิ่มเติมเกี่ยวกับมีอยู่และใน
in ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้เงื่อนไข IN ใน where คําสั่ง ใช้ข้อมูลนี้เมื่อไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์ เรียนรู้เพิ่มเติมเกี่ยวกับมีอยู่และใน
matchfirstrowusingcrossapply ตัวแปรของ inner ที่สามารถให้ประโยชน์ด้านประสิทธิภาพการทํางานได้ ใช้ชนิดนี้เมื่อเพียงตัวอย่างเดียวของแถวที่ตรงกันจากเอนทิตีที่มีการเชื่อมโยงนั้นเพียงพอ และไม่จําเป็นต้องมีสําเนาของแถวหลักหลายสําเนาในผลลัพธ์ เรียนรู้เพิ่มเติมเกี่ยวกับ matchfirstrowusingcrossapply

องค์ประกอบแม่

ชื่อ คำอธิบาย
เอกลักษณ์ ระบุองค์ประกอบรองสําหรับ องค์ประกอบการดึงข้อมูล 'เอนทิตีหลัก' สําหรับคิวรี อนุญาตเพียงหนึ่งเอนทิตีเท่านั้น
link-entity รวมตารางที่เกี่ยวข้องกับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับคอลัมน์เพิ่มเติมด้วยผลลัพธ์

องค์ประกอบย่อย

ชื่อ เหตุการณ์ คำอธิบาย
แอตทริบิวต์ทั้งหมด 0 หรือ 1 ระบุว่าค่าคอลัมน์ที่ไม่ใช่ null ทั้งหมดสําหรับแต่ละแถวจะถูกส่งกลับ ซึ่งเหมือนกับไม่เพิ่ม องค์ประกอบแอตทริบิวต์ใด ๆ เราไม่แนะนําให้ใช้องค์ประกอบนี้สําหรับกรณีส่วนใหญ่
คุณสมบัติ 0 หรือหลาย ระบุคอลัมน์จาก เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับพร้อมกับคิวรี
สั่ง 0 หรือหลาย ระบุลําดับการจัดเรียงสําหรับแถวของผลลัพธ์
link-entity 0 หรือหลาย รวมตารางที่เกี่ยวข้องกับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อส่งกลับคอลัมน์เพิ่มเติมด้วยผลลัพธ์
กรอง 0 หรือ 1 ระบุเงื่อนไขที่ซับซ้อนสําหรับ เอนทิตี หรือ เอนทิตีลิงก์ เพื่อนําไปใช้กับคิวรี