FetchXml लिंक-एंटिटी एलिमेंट

परिणाम के साथ अतिरिक्त स्तंभ वापस करने के लिए निकाय या लिंक-निकाय से संबंधित तालिका में शामिल होता है. संबंधित तालिकाओं में स्तंभ मानों पर शर्तों को लागू करने के लिए फ़िल्टर तत्वों के साथ भी उपयोग किया जाता है.

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 कई-से-कई संबंध का उपयोग करके SystemUser और टीम तालिकाओं से डेटा लौटाती है।

<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 1 से शुरू होने वाले XML में लिंक-इकाई की अनुक्रमिक संख्या है।
link-type नहीं लिंक उपयोग का प्रकार. डिफ़ॉल्ट व्यवहार आंतरिक है। संबंधित रिकॉर्ड्स फ़िल्टर करने के लिए लिंक-प्रकार विकल्पों के बारे में जानें
intersect नहीं इंगित करता है कि तालिकाओं में link-entity शामिल होने के लिए उपयोग किया जाता है और किसी भी कॉलम को वापस नहीं किया जाता है, आमतौर पर कई-से-कई संबंध के लिए। इस विशेषता का अस्तित्व क्वेरी निष्पादन को नहीं बदलता है। जब आप किसी तालिका में शामिल होते हैं, तो आप इस विशेषता को अपने साथ link-entity जोड़ सकते हैं, लेकिन यह दिखाने के लिए कोई विशेषता तत्व शामिल न करें कि यह जानबूझकर किया गया है.

उपयोग और from विशेषताएँ to

और विशेषताओं to दोनों के from लिए मान सेट करें। मिलान करने के लिए स्तंभों को स्पष्ट रूप से परिभाषित करने के लिए इन विशेषताओं का उपयोग करें. हालाँकि, from और विशेषताओं to की तकनीकी रूप से आवश्यकता नहीं है।

नोट

  • आपके द्वारा और विशेषताओं to में निर्दिष्ट from स्तंभ समान प्रकार के होने चाहिए. Dataverse अलग-अलग कॉलम प्रकारों का उपयोग करने का समर्थन नहीं करता है. जब कॉलम एक ही प्रकार के नहीं होते हैं, तो Dataverse बुनियादी ढांचा रूपांतरण को बाध्य करने में सक्षम हो सकता है, लेकिन इस अभ्यास के परिणामस्वरूप एक महत्वपूर्ण प्रदर्शन दंड हो सकता है।

  • FetchXml में और विशेषताओं का अर्थ संबंधित from और to गुणों के विपरीत है जिनका उपयोग 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सिस्टमयूजर और टीम तालिकाओं के बीच कई से कई संबंध का उपयोग करें। इस मामले में, 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 प्रदर्शन लाभ प्रदान कर सकता है। खंड में एक where शर्त का उपयोग करता है। इसका उपयोग तब करें जब परिणामों में मूल पंक्ति की एकाधिक प्रतियां आवश्यक न हों। मौजूद और में के बारे में अधिक जानें
in इसका एक प्रकार inner प्रदर्शन लाभ प्रदान कर सकता है। खंड में where शर्त का उपयोग करता है। इसका उपयोग तब करें जब परिणामों में मूल पंक्ति की एकाधिक प्रतियां आवश्यक न हों। मौजूद और में के बारे में अधिक जानें
matchfirstrowusingcrossapply इसका एक प्रकार inner प्रदर्शन लाभ प्रदान कर सकता है। इस प्रकार का उपयोग तब करें जब लिंक किए गए निकाय से मेल खाने वाली पंक्ति का केवल एक ही उदाहरण पर्याप्त हो और परिणामों में पैरेंट पंक्ति की एकाधिक प्रतिलिपियाँ आवश्यक न हों. matchfirstrowusingcrossapply के बारे में अधिक जानें

मूल तत्व

नाम विवरण
स्थिति फ़ेच एलिमेंट के लिए चाइल्ड एलिमेंट को निर्दिष्ट करता है, क्वेरी के लिए 'पैरेंट एंटिटी'. केवल एक इकाई की अनुमति है।
लिंक-एंटिटी परिणाम के साथ अधिक स्तंभ लौटाने के लिए निकाय या लिंक-निकाय से संबंधित तालिका में शामिल होता है.

बाल तत्व

नाम आवृत्तियों विवरण
सभी विशेषताएँ 0 या 1 इंगित करता है कि प्रत्येक पंक्ति के लिए सभी गैर-शून्य स्तंभ मान दिए गए हैं. यह किसी भी विशेषता तत्वों को नहीं जोड़ने के समान है। हम ज्यादातर मामलों के लिए इस तत्व का उपयोग करने की अनुशंसा नहीं करते हैं।
लक्षण 0 या कई किसी क्वेरी के साथ वापस जाने के लिए किसी निकाय या लिंक-निकाय से एक स्तंभ निर्दिष्ट करता है.
आदेश 0 या कई परिणामों की पंक्तियों के लिए एक सॉर्ट क्रम निर्दिष्ट करता है।
लिंक-एंटिटी 0 या कई परिणाम के साथ अधिक स्तंभ लौटाने के लिए निकाय या लिंक-निकाय से संबंधित तालिका में शामिल होता है.
छानना 0 या 1 किसी निकाय या लिंक-निकाय के लिए किसी क्वेरी पर लागू करने के लिए जटिल शर्तें निर्दिष्ट करें.