Пила это сообщение о преобразовании результатов из 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");
К сожалению, мне нужно получить идентификатор связанных объектов, и после вызова FetchXML не возвращаются никакие идентификаторы; просто пустые гиды.
Я могу получить идентификатор родительской сущности (cc_case), вызвав result.ID.
Но как насчет детей? Как получить идентификаторы?
EDIT: Вот пример 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 лиц. Я могу получить идентификатор из объекта cc_case, но не из связных объектов.
Вы искали "new_customid"? Можете ли вы разместить свой fetchxml? – dynamicallyCRM
Что такое «этот пост»? Также опубликуйте свой запрос и опишите свою модель сущности, трудно ответить на этот вопрос на основе предоставленной вами информации. –