Кажется, что я столкнулся с еще одним из тех готчей, которые отправляют меня на очередную кривую обучения.Я работаю с MS Dynamics CRM 2016 на предпосылке и пытаюсь вернуть атрибут и значение для «plugintypeidname» из сущности «SdkMessageProcessingStep».Это открыло банку с червями с точки зрения пробелов в моих знаниях и надеялись на какое-то объяснение.
System.ServiceModel.FaultException`1: 'Cannotукажите дочерние атрибуты в наборе столбцов для получения.Атрибут: plugintypeidname '
System.ServiceModel.FaultException`1:' Извлечение может возвращать только те столбцы, которые допустимы для чтения.Колонка: опорные решения.Entity: sdkmessageprocessingstep '
Если я взгляну на представление этой системной сущности в MSCRM, я увижу встроенные комментарии, ни один из логических атрибутов не доступен, но большинство, но не все физические атрибуты доступны в моемнабор столбцов запроса (выражение запроса).
Я знаю о пропущенных столбцах, когда значение равно NULL, и вы должны проверить это через Entity.Contains (someKey), однако это не проблема.Поскольку это значение заполнено на 100%.
Почему они недоступны, и я могу где-нибудь прочитать об этом поведении и разнице между логическим атрибутом и физическим атрибутом?Это также является проблемой, если мне когда-нибудь понадобилось это значение поля, где CRM, по-видимому, не всегда возвращает желаемый столбец из БД?
Мой запрос
> select
> sdkmessageprocessingstepsecureconfigid --always null
> ,versionnumber -- populated values and yet missing?
> ,eventhandlertypecode -- populated values and yet missing?
> ,overwritetime -- -- populated values and yet missing?
> ,supportingsolutionid -- -- populated values and yet missing?
> from SdkMessageProcessingStep
> where
> StateCode=0 AND
> StatusCode=1
> and
> CreatedByName='System'
Отсутствующие поля
> [ImpersonatingUserIdName], -- logical field so never available
> [CreatedOnBehalfByName], -- logical field so never available
> [CreatedByName], -- logical field so never available
> [ModifiedByName], -- logical field so never available
> [ModifiedOnBehalfByYomiName], -- logical field so never available
> [ModifiedOnBehalfByName], -- logical field so never available
> [CreatedOnBehalfByYomiName], -- logical field so never available
> [SdkMessageIdName], -- logical field so never available
> [PluginTypeIdName], -- logical field so never available
> EventHandlerName, -- logical field so never available
> sdkmessageprocessingstepsecureconfigId --always null ,versionnumber -- populated values and yet missing?
> ,eventhandlertypecode -- populated values and yet missing?
> ,overwritetime -- -- populated values and yet missing?
> ,supportingsolutionid -- -- populated values and yet missing?
Выражение запроса
CrmServiceClient _crmClient = new CrmServiceClient(targetConnection);
QueryExpression query =
new QueryExpression
{
EntityName = "sdkmessageprocessingstep",
ColumnSet = new ColumnSet("name", "sdkmessageprocessingstepid", "description", "eventhandlertypecode",
"sdkmessageprocessingstepsecureconfigid",
"versionnumber",
"eventhandlertypecode",
"overwritetime",
"supportingsolutionid",
"plugintypeidname"
)
};
filterAnd = new FilterExpression
{
FilterOperator = LogicalOperator.And,
Conditions = {
new ConditionExpression("statecode", ConditionOperator.Equal, 0),
new ConditionExpression("statuscode", ConditionOperator.Equal, 1),
new ConditionExpression("createdbyname", ConditionOperator.Equal, "System");
}
};
query.Criteria.AddFilter(filterAnd);
EntityCollection rs = _crmClient.RetrieveMultiple(query);
Спасибо