هل يمكنك كتابة استعلام FetchXML واحد للحصول على علاقة 1:العديد؟

StackOverflow https://stackoverflow.com/questions/2874860

  •  03-10-2019
  •  | 
  •  

سؤال

هل من الممكن كتابة استعلام FetchXML واحد يحصل على كيان جذر وعناصر فرعية متعددة؟كل ما تمكنت من فعله هو 1:1.

هل كانت مفيدة؟

المحلول

لا، لم يكن ممكنا.

نصائح أخرى

جيمس وود صحيح. Fetch XML متكرر ، لذا باستخدام كيان الارتباط ، يمكنك الحصول على المعلومات التي تريدها.

على سبيل المثال ، ما يلي صالح:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="account">
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <link-entity name="contact" from="parentcustomerid" to="accountid" alias="aj">
        <attribute name="firstname" />
        <attribute name="lastname" />
        <attribute name="telephone1" />
        <link-entity name="businessunit" from="businessunitid" to="owningbusinessunit" alias="ak">
            <attribute name="name" />
            <attribute name="address1_line1" />
            <attribute name="address1_line2" />
            <attribute name="address1_line3" />
            <filter type="and">
              <condition attribute="name" operator="not-null" />
            </filter>
        </link-entity>
    </link-entity>
  </entity>
</fetch>

إذا كان سؤالك حقًا "هل من الممكن كتابة استعلام واحد fetchxml يحصل غير مرتبطة كيان الجذر والعديد من الأطفال "، فإن الإجابة هي للأسف لا. ومع ذلك ، إذا كنت قادرًا على التعامل مع التكرارات لبيانات الجذر (على سبيل المثال ، باستخدام وظيفة التجميع لتقرير SSRS) ، فإن ما تحتاجه ممكن تمامًا

ما لم أساء فهم السؤال ، فهذا ممكن للغاية.

لذلك على سبيل المثال ، تريد العثور على جميع جهات الاتصال المتعلقة بحساب معين. يتم تمثيل هذا في CRM بواسطة بحث العميل الأصل على جهة الاتصال إلى الحساب.

enter image description here

<fetch mapping="logical" count="100" version="1.0">
    <entity name="account">
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid">
            <attribute name="fullname" />
        </link-entity>
    </entity>
</fetch>

الذي يمنحك مجموعة نتائج تبدو هكذا:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;accountid last=&quot;{E704FAD6-2D4B-E111-9FED-00155D828444}&quot; first=&quot;{AD912122-6B3C-E111-9B37-00155D828444}&quot; /&gt;&lt;/cookie&gt;">
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Bill Miner</accountid.fullname>
    </result>
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Green</accountid.fullname>
    </result>
</resultset>

ويسعدني أن أبلغكم أن ذلك ممكن.لدي الحل الذي يعمل بشكل جيد بالنسبة لي.

التحذير الوحيد هو أنه إذا كان لديك حسابات فرعية متعددة، فستحصل على نتائج متعددة للوالد.على سبيل المثال:

parent 1: child 1
parent 2: child 1
parent 2: child 2

هذا يعني أنه سيتعين عليك بعد ذلك تشغيل النتائج من خلال وظيفة الفرز، إما للحصول على جميع الأطفال تحت الوالدين في مصفوفة متعددة الأبعاد، أو الحصول على جميع الحسابات كإدخالات فريدة في مصفوفة مسطحة.

أيضًا، هذا ينخفض ​​مستوى واحد فقط.إذا كان التسلسل الهرمي الخاص بك متعدد المستويات، فسيحتاج هذا الرمز إلى التعديل.

<fetch distinct="false" mapping="logical"> 
   <entity name="account">     
        <attribute name="name" />
        <link-entity name="account"  alias="childaccount" to="accountid" from="parentaccountid"  link-type="outer">
            <attribute name="name" alias="childname" />
        </link-entity>
    </entity>           
</fetch>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top