主数据服务服务使用WCF服务获取数据

时间:2017-05-15 09:45:57

标签: sql sql-server sql-server-2016 master-data-services

您好我是MDS的新手我已经设置了webui / sql db等所有内容,我现在正在寻找一个演示控制台应用程序来通过wcf服务连接并带回一些数据。

我没有运气地搜索过高低,或者发现了我认为是较老的api来获取数据

我应该使用EnityMember Set吗?

或者其他来获取模型中的数据?

此致

迈克尔

1 个答案:

答案 0 :(得分:0)

我知道回答你的问题有点迟,但我偶然发现了它。

我使用以下示例MSDN blogs开始编写以下基本的.Net Core Console应用程序。虽然远非完整或详细,但我希望我的代码可以帮助您:

using MDService;
using System;
using System.Threading.Tasks;

namespace MDS_WS_Console
{
    class Program
    {
        private static ServiceClient mdsProxy;

        static void Main(string[] args)
        {
            Console.WriteLine("Connecting ...");
            try
            {
                mdsProxy = CreateMdsProxy("http://192.168.0.101:7101/service/service.svc");
                Console.WriteLine("Connected");
            }
            catch (Exception)
            {
                Console.WriteLine("Error connecting ...");
                Console.ReadKey();
                throw;
            }

            Console.WriteLine("Fetching ...");
            ReadRecordsAsync().Wait();
            Console.ReadKey();
        }

        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");
                        }
                    }
                }

            }
        }

        private static ServiceClient CreateMdsProxy(string mdsURL)
        {
            // create endpoint using URL
            System.ServiceModel.EndpointAddress endptAddress = new System.ServiceModel.EndpointAddress(mdsURL);

            // create and configure WS Http binding
            System.ServiceModel.BasicHttpBinding wsBinding = new System.ServiceModel.BasicHttpBinding();

            // create and return the client proxy
            return new ServiceClient(wsBinding, endptAddress);
        }
    }
}