09.07.2009, 20:40 | #1 |
Участник
|
Преобразование Key->Guid
Для получения выборки ссылочной сущности (отношение N:1) по списку Id основной сущности в запрос нужно передавать эти Id в виде Guid-ов. Guid-ы извлекаются из выборки записей основной сущности, где они содержаться в атрибуте первичного ключа (PK). Это атрибут имеет тип Microsoft.Crm.Sdk.Key и напрямую в Guid никак не хочет преобразовываться. Пришлось применитть 2-х шаговое преобразование с использованием промежуточных переменных:
Код: ce = new ConditionExpression(); ce.AttributeName = "new_primaryobjectreference"; ce.Operator = ConditionOperator.In; ce.Values = new Object[result.BusinessEntityCollection.BusinessEntities.Count]; Key dekey; Guid deid = new Guid(); for (int i = 0; i < result.BusinessEntityCollection.BusinessEntities.Count; i++) { de = (DynamicEntity)result.BusinessEntityCollection.BusinessEntities[i]; dekey = de.Properties["new_primaryobjectid"] as Key; deid = dekey.Value; ce.Values[i] = deid; } В начале я вообще не думал, что нужно будет делать какие-либо преобразования. Для передачи значений создал универсальный массив generic-объектов, в который просто сохранял список ключей. Но при выполении запроса CRM ругался: "ты подсунул Key туда где нужен Guid" и пришлось искать способ привести значения к нужному типу. |
|
|
|