Поля, отсутствующие в методе CRM RetrieveMultiple через выражение запроса - PullRequest
0 голосов
/ 30 мая 2018

Кажется, что я столкнулся с еще одним из тех готчей, которые отправляют меня на очередную кривую обучения.Я работаю с 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);

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...