인 경우 FetchXML의 결과를 강력한 형식의 CRM 엔터티로 변환하는 데 대한이 게시물을 보았습니다.FetchXML 형식의 관련 엔터티가 없습니다. ID가
//CrmEntity is a base class I insert into my generated code
//to differentiate early-bound classes; you can use Entity
public static T ToRelatedEntity<T>(this Entity rawEntity, string relatedAlias)
where T:CrmEntity, new()
{
var result = new Entity(new T().LogicalName);
foreach(var attribute in rawEntity.Attributes
.Where(kvp=>kvp.Key
.StartsWith(relatedAlias + ".")))
{
var newName = attribute.Key.Replace(relatedAlias + ".", String.Empty);
result[newName] = ((AliasedValue)attribute.Value).Value;
}
foreach(var formattedValue in rawEntity.FormattedValues
.Where(kvp=>kvp.Key
.StartsWith(relatedAlias + ".")))
{
var newName = formattedValue.Key.Replace(relatedAlias + ".", String.Empty);
result.FormattedValues[newName] = formattedValue.Value;
}
return result.ToEntity<T>();
}
//usage
var query = new FetchExpression(fetchXml);
var response = service.RetrieveMultiple(query);
var contact = response.Entities[0].ToEntity<Contact>();
var newCustom = response.Entities[0].ToRelatedEntity<new_custom>("nc");
불행히도 관련 엔터티 ID를 검색해야하며 FetchXML 호출 후에 ID가 반환되지 않습니다. 그냥 빈 Guids.
result.ID를 호출하여 상위 엔티티 (cc_case) ID를 가져올 수 있습니다.
하지만 아이들 엔티티는 어떻습니까? ID를 얻으려면 어떻게해야합니까?
편집 : 여기 FetchXML의 예 :
<fetch no-lock="true">
<entity name="cc_case" >
<all-attributes/>
<filter type="and" >
<condition attribute="cc_caseid" operator="equals" >
XXXX
</condition>
</filter>
<link-entity name="cc_contact_account" from="contactid" to="cc_submitterid" link-type="outer" alias="CC_Contact_Account" >
<all-attributes/>
<link-entity name="account" from="accountid" to="accountid" alias="Account" >
<all-attributes/>
<link-entity name="contact" from="contactid" to="cc_billingcontactid" alias="Contact" >
<all-attributes/>
</link-entity>
</link-entity>
</link-entity>
<link-entity name="cc_patient" from="cc_patientid" to="cc_patientid" link-type="outer" alias="Patient" >
<all-attributes/>
</link-entity>
그래서, 질문은 당신이 cc_contact_account 및 cc_patient 실체에서 ID를 얻는 방법이다. 엔티티 cc_case에서 ID를 검색 할 수 있지만 링크 엔티티에서는 ID를 검색 할 수 없습니다.
"new_customid"를 찾으셨습니까? fetchxml을 게시 할 수 있습니까? – dynamicallyCRM
"이 게시물"이 무엇입니까? 또한 쿼리를 게시하고 엔터티 모델을 설명하십시오. 제공된 정보를 기반으로이 질문에 대답하기가 어렵습니다. –