Microsoft Xrm: невозможно упорядочить по языку объект типа IQueryable <KnowledgeArticle> - PullRequest
0 голосов
/ 17 декабря 2018

Я просто пытаюсь заказать по их языку набор KnowledgeArticle.Моим первым предположением было:

var SPRSet = _XrmServiceContext.KnowledgeArticleSet
            .Where(c => c.IsInternal == false)
            .Where(c => c.StateCode == Xrm.KnowledgeArticleState.Published)
            .OrderBy(s => s.LanguageLocaleId.Name)

Это дает мне следующую ошибку:

System.NotSupportedException: 'Вызов' orderBy 'должен указывать имена свойств.'

Затем я попытался загрузить сущность LanguageLocale, выполнив следующие действия:

SPRSet.OrderBy(s => _XrmOrganizationService.Retrieve(s.LanguageLocaleId.LogicalName, s.LanguageLocaleId.Id, new ColumnSet("name")).ToEntity<Xrm.LanguageLocale>().Name);

или аналогичный:

SPRSet.OrderBy(s => _XrmOrganizationService.Retrieve(s.LanguageLocaleId.LogicalName, s.LanguageLocaleId.Id, new ColumnSet("name")).GetAttributeValue<string>("name"));

Оба выдавали мне следующую ошибку:

System.ServiceModel.FaultException`1:
Сущность «KnowledgeArticle» не содержит атрибута с Name = 'name' и NameMapping = 'Logical'.MetadataCacheDetails: ProviderType = Dynamic, StandardCache = True, IsLoadedInStagedContext = False, Timestamp = 62358974, MinActiveRowVersion = 62358974 '

При отладке загрузка объекта LanguageLocale работает нормально, когда я оцениваю первый элемент в выражении выражения на оценкеМой набор:

var languageName = _XrmOrganizationService.Retrieve(SPRSet.First().LanguageLocaleId.LogicalName, SPRSet.First().LanguageLocaleId.Id, new ColumnSet("name")).ToEntity<Xrm.LanguageLocale>().Name

Другие сорта на Title или ArticlePublicNumber работают нормально.

1 Ответ

0 голосов
/ 18 декабря 2018

Я запустил браузер метаданных XrmToolbox, чтобы посмотреть.

Проблема, с которой вы сталкиваетесь, может быть связана с тем фактом, что для объекта, такого как поле name учетной записи, флаг IsRetrievable установлен в true.

Принимая во внимание, что для name в LanguageLocale IsRetrievable установлено false.

Учетная запись:

Account

LanguageLocale:

LanguageLocale

Я не уверен, что вы можете сделать с этим.Возможно, вам придется придумать альтернативный способ хранения информации о языке в статье KnowledgeArticle.

...