Chia sẻ qua


thành phần thực thể nối kết

Kết hợp bảng liên quan đến thực thể hoặc thựcthể liên kết để trả về các cột bổ sung với kết quả. Cũng được sử dụng với các yếu tố lọc để áp dụng điều kiện trên giá trị cột trong các bảng liên quan.

Tìm hiểu cách kết hợp bảng bằng FetchXml.

Ví dụ

Các ví dụ sau đây cho thấy việc sử dụng link-entity với các loại mối quan hệ khác nhau.

Mối quan hệ nhiều đối một

Truy vấn này trả về dữ liệu từ bảng tài khoản liên hệ dựa trên cột tra cứu PrimaryContactId trong bản ghi tài khoản:

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

Mối quan hệ một đối nhiều

Truy vấn này trả về dữ liệu từ cácbảng liên hệ và tài khoản dựa trên mối account_primary_contact hệ một-nhiều.

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

Mối quan hệ nhiều đối nhiều

Truy vấn này trả về dữ liệu từ bảng SystemUserTeamteammembership_association mối quan hệ nhiều-đến-nhiều.

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

Thuộc tính

Tên Bắt buộc? Sự miêu tả
name Tên logic của bảng liên quan.
to Không Tên lô-gic của cột trong thành phần mẹ để khớp với cột bảng liên quan được xác định trong thuộc from tính. Mặc dù không bắt buộc về mặt kỹ thuật, thuộc tính này thường được sử dụng.
from Không Tên lô-gic của cột từ bảng có liên quan khớp với cột đã xác định trong thuộc to tính. Mặc dù không bắt buộc về mặt kỹ thuật, thuộc tính này thường được sử dụng.
alias Không Đại diện cho tên của bảng liên quan. Nếu bạn không đặt biệt danh, một biệt danh sẽ được tạo cho bạn để đảm bảo tất cả các cột đều có tên duy nhất, nhưng bạn sẽ không thể sử dụng biệt danh đó để tham chiếu thực thể nối kết trong các phần khác của XML tìm nạp. Biệt danh được tạo tự {LogicalName}+{N}động sử dụng mẫu hình , N trong đó số tuần tự của thực thể liên kết trong XML tải bắt đầu từ 1.
link-type Không Loại sử dụng liên kết. Hành vi mặc định là bên trong. Tìm hiểu về các tùy chọn kiểu liên kết
intersect Không Cho biết rằng được link-entity dùng để nối các bảng và không trả về bất kỳ cột nào, thường là cho mối quan hệ nhiều đối nhiều. Sự tồn tại của thuộc tính này không làm thay đổi việc thực hiện truy vấn. Bạn có thể thêm thuộc tính này vào khi link-entity tham gia bảng nhưng không bao gồm bất kỳ thành phần thuộc tính nào để cho thấy rằng đây là thuộc tính có chủ ý.

Sử dụng fromto thuộc tính

Tốt nhất là nên đặt giá trị cho cả thuộc from tính và to thuộc tính. Cả hai thuộc tính này thường được sử dụng để xác định rõ ràng các cột để khớp. Tuy nhiên, về from mặt to kỹ thuật không bắt buộc phải có thuộc tính và thuộc tính.

Lưu ý

  • Điều quan trọng là các cột được xác định trong fromto các thuộc tính có cùng kiểu. Không hỗ trợ sử dụng các loại cột khác nhau. Khi các cột không cùng loại, cơ sở hạ tầng Dataverse có thể buộc chuyển đổi nhưng thực hành này có thể dẫn đến một hình phạt hiệu suất đáng kể.

  • from to Ý nghĩa của và thuộc tính trong FetchXml đối lập với thuộc tính LinkEntity.LinkFromAttributeNameLinkEntity.LinkToAttributeName tương ứng được sử dụng khi soạn truy vấn bằng QueryExpression.

Nếu bạn không sử dụng một trong hai thuộc tính này và tồn tại mối quan hệ nhiều-đến-nhiều hệ thống giữa hai bảng, Dataverse sẽ chọn các giá trị khóa thích hợp bằng mối quan hệ đó.

Nếu bạn chỉ xác định một fromto trong các thuộc tính hoặc, Dataverse sẽ cố gắng tìm ra mối quan hệ chính xác bằng cách sử dụng định nghĩa sơ đồ mối quan hệ giữa hai bảng.

Nếu không, bạn sẽ gặp lỗi sau:

Mã: 0x80041102
Thông điệp: 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.

Ví dụ: cả hai truy vấn này đều sử teammembership_association mối quan hệ nhiều-đến-nhiều giữa người dùng hệ thốngvà bảng nhóm. Trong trường hợp này, Dataverse fromtolink-entity có thể tìm ra các thuộc tính và chỉ định bảng giao nhau là không cần thiết.

Xác định tất cả các thuộc tính

<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 chọn

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

Dùng để link-type áp dụng bộ lọc trên các bản ghi được trả về. Bảng sau mô tả các giá trị hợp link-type lệ:

Tên Sự miêu tả
inner Mặc định. Hạn chế kết quả ở các hàng có giá trị khớp trong cả hai bảng.
outer Bao gồm kết quả từ thành phần mẹ không có giá trị khớp.
any Sử dụng phần tử này trong một bộ lọc. Hạn chế kết quả cho hàng cha mẹ với bất kỳ hàng khớp nào trong thực thể được nối kết. Tìm hiểu cách dùng để any lọc giá trị trên các bảng liên quan
not any Sử dụng phần tử này trong một bộ lọc. Hạn chế kết quả ở các hàng cha mẹ không có hàng khớp trong thực thể được nối kết. Tìm hiểu cách dùng để not any lọc giá trị trên các bảng liên quan
all Sử dụng phần tử này trong một bộ lọc. Hạn chế kết quả cho hàng cha mẹ trong đó các hàng có giá trị cột khớp tồn tại trong thực thể liên kết nhưng không có hàng khớp nào thỏa mãn các bộ lọc bổ sung được xác định cho thực thể nối kết này.from Bạn cần đảo ngược các bộ lọc bổ sung để tìm hàng mẹ, trong đó mỗi hàng thực thể nối kết khớp đáp ứng một số tiêu chí bổ sung. Tìm hiểu cách dùng để all lọc giá trị trên các bảng liên quan
not all Sử dụng phần tử này trong một bộ lọc. Hạn chế kết quả cho hàng cha mẹ với bất kỳ hàng khớp nào trong thực thể được nối kết. Loại liên kết này tương đương với any mặc dù tên. Tìm hiểu cách dùng để not all lọc giá trị trên các bảng liên quan
exists Một biến thể có thể inner cung cấp lợi ích hiệu suất. Sử dụng điều kiện EXISTS trong mệnh where đề. Sử dụng tùy chọn này khi không cần nhiều bản sao của hàng mẹ trong kết quả. Tìm hiểu thêm về hiện có và trong
in Một biến thể có thể inner cung cấp lợi ích hiệu suất. Sử dụng điều kiện IN trong mệnh where đề. Sử dụng tùy chọn này khi không cần nhiều bản sao của hàng mẹ trong kết quả. Tìm hiểu thêm về hiện có và trong
matchfirstrowusingcrossapply Một biến thể có thể inner cung cấp lợi ích hiệu suất. Sử dụng loại này khi chỉ có một ví dụ duy nhất về một hàng khớp từ thực thể được nối kết là đủ và không cần nhiều bản sao của hàng mẹ trong kết quả. Tìm hiểu thêm về matchfirstrowusingcrossapply

Thành phần mẹ

Tên Sự miêu tả
thực thể Xác định thành phần con cho thành phần tải, 'thực thể mẹ' cho truy vấn. Chỉ cho phép một thực thể.
thực thể nối kết Kết hợp bảng liên quan đến thực thể hoặcthực thể liên kết để trả về nhiều cột hơn với kết quả.

Thành phần con

Tên Sự kiện Sự miêu tả
tất cả các thuộc tính 0 hoặc 1 Cho biết rằng tất cả các giá trị cột không phải là null cho mỗi hàng đều được trả về. Nó giống như không thêm bất kỳ thành phần thuộc tính nào. Chúng tôi khuyên bạn không nên sử dụng yếu tố này cho hầu hết các trường hợp.
thuộc tính 0 hoặc nhiều Xác định cột từ một thực thể hoặcthực thể nối kết để trả về với truy vấn.
đặt hàng 0 hoặc nhiều Xác định thứ tự sắp xếp cho các hàng của kết quả.
thực thể nối kết 0 hoặc nhiều Kết hợp bảng liên quan đến thực thể hoặcthực thể liên kết để trả về nhiều cột hơn với kết quả.
bộ lọc 0 hoặc 1 Xác định điều kiện phức tạp cho thựcthể hoặc thực thể nối kết để áp dụng cho truy vấn.