Microsoft CRM 4.0 LINQ - получение отображаемых имен атрибутов из CRM с помощью LINQ - PullRequest
1 голос
/ 20 июня 2011

Кто-нибудь делал это с расширением Xrm Advanced Dev? Я создаю внешний портал

Допустим, у меня в атрибуте учетной записи есть атрибут aaa_accountfield. У сущности учетной записи XML есть

<displaynames>
 <displayname description="attribute display name" languagecode="1033" />
 <displayname description="attribute display name in some other language" languagecode="1045" />
</displaynames>

Заранее спасибо

1 Ответ

0 голосов
/ 22 июня 2011

Не уверен, что это имеет отношение к XML, но я почти уверен, что вы можете использовать ADX, чтобы получить IOrganizationService, который должен иметь возможность делать запросы метаданных.Я бы дал следующий код выстрел.Вам, вероятно, следует изменить его, чтобы проверить, возвращают ли разные языки значения перед захватом первого, или вы будете подвержены исключениям.

 var crm = new Xrm.XrmDataContext("CacheDisabled");
 crm.UsingService(service =>
        {
                // Use this code to grab a complete set of EntityMetadata.
                var entityRequest = new RetrieveEntityRequest();
                entityRequest.LogicalName = "account";
                entityRequest.RetrieveAsIfPublished = false;

                RetrieveEntityResponse entityResponse = new RetrieveEntityResponse();
                EntityMetadata entityMetadata = entityResponse.EntityMetadata;
                //entityMetadata.Attributes...

                // Use this to grab AttributeMetadata for a specific attribute.
                RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest();
                attributeRequest.EntityLogicalName = "account";
                attributeRequest.LogicalName = "name";
                attributeRequest.RetrieveAsIfPublished = false;

                RetrieveAttributeResponse attributeResponse = new RetrieveAttributeResponse();
                AttributeMetadata attributeMetadata = attributeResponse.AttributeMetadata;
                string labelLanguage1 = attributeMetadata.DisplayName.LocLabels.Where(l => l.LanguageCode.Value == 1033).First().Label;
                string labelLanguage2 = attributeMetadata.DisplayName.LocLabels.Where(l => l.LanguageCode.Value == 1045).First().Label;

        }
...