Как получить атрибут «Значение домена» с помощью WCF API Master Data Services (MDS) - PullRequest
0 голосов
/ 25 апреля 2018

Чтобы овладеть API-интерфейсом MDS WCF, я запустил консольное приложение .Net Core.Я изо всех сил пытаюсь найти подробную документацию по структуре данных, используемых в API.Теперь у меня есть простая функция, которая использует EntityMembersGet для чтения членов (строк) определенной сущности.Данные возвращаются службой MDS, но когда я пытаюсь прочитать / отобразить данные, я не могу понять, как отобразить атрибут «Значение домена».Для отображения значений атрибутов я использую EntityMembers.Members.Attributes []. Значение , которое отлично работает, когда Атрибут является атрибутом Freefrom.Однако, когда Атрибут является атрибутом Домена, использование EntityMembers.Members.Attributes []. Значение возвращает «MDService.MemberIdentifier».Итак, мой вопрос: как я могу получить атрибут «Значение домена»?

Я поделился своим кодом и выводом.

В качестве дополнительного вопроса было бы здорово, если бы кто-то смогукажите мне более описательную документацию по API MDS WCF, чем на MSDN.

 public static async Task ReadRecordsAsync()
    {
        EntityMembersGetRequest getRequest = new EntityMembersGetRequest();
        EntityMembersGetResponse getResponse = new EntityMembersGetResponse();

        EntityMembersGetCriteria membersGetCriteria = new EntityMembersGetCriteria
        {
            ModelId = new Identifier() { Name = "Model1" },
            EntityId = new Identifier() { Name = "Entity1" },
            VersionId = new Identifier() { Name = "VERSION_1" },
            MemberType = MemberType.Leaf,
            MemberReturnOption = MemberReturnOption.DataAndCounts
        };

        getRequest.MembersGetCriteria = membersGetCriteria;
        //EntityMembersGetResponse getResponse = await mdsProxy.EntityMembersGetAsync(getRequest);
        getResponse = await mdsProxy.EntityMembersGetAsync(getRequest);

        Console.WriteLine("Member information: \n Membercount: {0} | TotalPages: {1}", getResponse.EntityMembersInformation.MemberCount, getResponse.EntityMembersInformation.TotalPages);
        //Console.WriteLine("Members: \n Count: {0}", getResponse.EntityMembers.Members.Count.ToString());

        if (getResponse.EntityMembers.Members.Count > 0)
        {              
            foreach (Member individualMember in getResponse.EntityMembers.Members)
            {
                Console.WriteLine("----------");
                Console.WriteLine("Individual Member: \n Id: {0} | Code: {1} | Name: {2}",
                    individualMember.MemberId.Id, 
                    individualMember.MemberId.Code,
                    individualMember.MemberId.Name);
                for (int i = 0; i < individualMember.Attributes.Count; i++)
                {
                    Console.WriteLine("Attributes ({0}): \n Id Id: {1} | Id name: {2} | Type: {3} | Value: {4} \n ",
                        i,
                        individualMember.Attributes[i].Identifier.Id,
                        individualMember.Attributes[i].Identifier.Name,
                        individualMember.Attributes[i].Type,
                        individualMember.Attributes[i].Value
                        );
                    if (individualMember.Attributes[i].Type == AttributeValueType.Domain)
                    {
                        Console.WriteLine("Domain attribute");
                    }
                }
            }

Вывод при запуске приложения: см. в конце строки «Атрибуты (2)» для атрибута доменавывод.


Member information:
 Membercount: 3 | TotalPages: 1
----------
Individual Member:
 Id: 655b4f56-8a03-47cc-bbdd-311d0103a97e | Code: Code1 | Name: Naam1
Attributes (0):
 Id Id: bc2a8c6d-bf50-41b5-bef5-4170949ec93c | Id name: No. | Type: String | Value: No.1

Attributes (1):
 Id Id: bb71e279-74ce-4131-a56a-f7be884d6067 | Id name: Description | Type: String | Value: Desc1

Attributes (2):
 Id Id: 5db1b524-c2ec-47ff-8d74-399859c6fed0 | Id name: UnitOfMeasure | Type: Domain | Value: MDService.MemberIdentifier

Domain attribute
----------
Individual Member:
 Id: d3fc1b10-30ee-4546-9b75-5c9c89c3fd00 | Code: Code2 | Name: Naam2
Attributes (0):
 Id Id: bc2a8c6d-bf50-41b5-bef5-4170949ec93c | Id name: No. | Type: String | Value: No.2

Attributes (1):
 Id Id: bb71e279-74ce-4131-a56a-f7be884d6067 | Id name: Description | Type: String | Value: Desc2

Attributes (2):
 Id Id: 5db1b524-c2ec-47ff-8d74-399859c6fed0 | Id name: UnitOfMeasure | Type: Domain | Value: MDService.MemberIdentifier

Domain attribute
----------

1 Ответ

0 голосов
/ 27 апреля 2018

Просматривая примеры возможностей SQL на GitHub, я нашел ответ на свой вопрос.Если атрибут является атрибутом домена, вы можете использовать класс MemberIdentifier для получения свойств атрибута:

if (Attribute.Type == AttributeValueType.Domain)
{
   MemberIdentifier dbaMemberId = (MemberIdentifier)anAttribute.Value;
   Console.WriteLine("Attribute Value:{0}", dbaMemberId.Code);
}

Надеюсь, это поможет кому-то другому искать информацию такого типа.

edit : это ссылка на примеры на GitHub

...