C# MDS 2012列出WCF中产品实体的成员

C# MDS 2012列出WCF中产品实体的成员,c#,sql,wcf,C#,Sql,Wcf,我需要在C#中列出生产实体中的成员 下面是代码,但我不知道如何构建成员列表属性,例如集合中的名称。代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; // additional references... using HelloMDS.MDService; /* for the created service reference */ using System.Co

我需要在C#中列出生产实体中的成员

下面是代码,但我不知道如何构建成员列表属性,例如集合中的名称。代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// additional references... 
using HelloMDS.MDService; /* for the created service reference */
using System.Collections.ObjectModel; /* supports collection objects used in the proxy */

namespace HelloMDSG_Members
{
    class Program
    {
        private static ServiceClient mdsProxy; /* service proxy object */

        static void Main(string[] args)
        {
            // Create the service proxy 
            Console.WriteLine("Connecting...");
            try
            {
                mdsProxy = CreateMdsProxy("http://localhost/MDS/service/Service.svc");
                Console.WriteLine("Connected.");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error connecting: " + ex.Message);
            }

            Console.WriteLine("Call GetMembers");
            GetMembers();

            Console.WriteLine("Finished");
            Console.ReadKey();

        }

        public static void GetMembers()
        {


            //declare a new MDS ServiceClient
            ServiceClient client = new ServiceClient();
            //EntityMembersGetRequest request = new EntityMembersGetRequest();

            //Build a request for Entity Members of the Product Entity 
            //in the Product Model, Version 4 from the MDS Sample package on the MS Connect site
            EntityMembersGetRequest request = new EntityMembersGetRequest();
            request.MembersGetCriteria = new EntityMembersGetCriteria();
            request.MembersGetCriteria.ModelId = new Identifier() { Name = "Model 1" };
            request.MembersGetCriteria.VersionId = new Identifier() { Name = "VERSION_1" };
            request.MembersGetCriteria.EntityId = new Identifier() { Name = "Product" };

            request.MembersGetCriteria.MemberReturnOption = MemberReturnOption.DataAndCounts; //without this the request doesn't return memebers !

            Console.WriteLine("Start getting data");

            //submit the request to the MDS Web service  Client
            EntityMembersGetResponse response = client.EntityMembersGet(request);

            Console.WriteLine("Count:{0}", response.EntityMembersInformation.MemberCount);

            //confirm that members were returned
            if (response.EntityMembersInformation.MemberCount > 0)
            {
                System.Collections.ObjectModel.Collection<Member> members = response.EntityMembers.Members;

                // HELP HERE PLEASE
                // write members list with the name attribute
                Console.WriteLine() member  - name attribute );               

            }

            HandleErrors(response.OperationResult);
        }

        // creates the service client proxy 
        private static ServiceClient CreateMdsProxy(string mdsURL)
        {
            // create an endpoint address using the URL 
            System.ServiceModel.EndpointAddress endptAddress = new System.ServiceModel.EndpointAddress(mdsURL);

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

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

        // Handles the operations results 
        private static void HandleErrors(OperationResult result)
        {
            string errorMessage = string.Empty;
            if (result.Errors.Count() != 0)
            {
                for (int i = 0; i <= result.Errors.Count() - 1; i++)
                {
                    errorMessage += " OperationResult:Error: " + result.Errors[i].Code + ":"
                         + result.Errors[i].Description + ":" + result.Errors[i].Context.Type.ToString();
                }
                Console.WriteLine("Error: " + errorMessage);
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
//其他参考资料。。。
使用HelloMDS.MDService;/*用于创建的服务引用*/
使用System.Collections.ObjectModel;/*支持代理中使用的集合对象*/
命名空间HelloMDSG_成员
{
班级计划
{
私有静态ServiceClient mdsProxy;/*服务代理对象*/
静态void Main(字符串[]参数)
{
//创建服务代理
控制台。写入线(“连接…”);
尝试
{
mdsProxy=CreateMdsProxy(“http://localhost/MDS/service/Service.svc");
控制台。写入线(“已连接”);
}
捕获(例外情况除外)
{
Console.WriteLine(“连接错误:+ex.Message”);
}
Console.WriteLine(“调用GetMembers”);
GetMembers();
控制台。写入线(“完成”);
Console.ReadKey();
}
公共静态void GetMembers()
{
//声明新的MDS ServiceClient
ServiceClient=新ServiceClient();
//EntityMembersGetRequest请求=新的EntityMembersGetRequest();
//为产品实体的实体成员生成请求
//在产品模型中,版本4来自MS Connect站点上的MDS示例包
EntityMembersGetRequest请求=新的EntityMembersGetRequest();
request.MembersGetCriteria=新EntityMembersGetCriteria();
request.MembersGetCriteria.ModelId=新标识符(){Name=“Model 1”};
request.MembersGetCriteria.VersionId=新标识符(){Name=“VERSION_1”};
request.MembersGetCriteria.EntityId=新标识符(){Name=“Product”};

request.MembersGetCriteria.MemberReturnOption=MemberReturnOption.DataAndCounts;//如果没有此选项,请求不会返回memebers! Console.WriteLine(“开始获取数据”); //将请求提交到MDS Web服务客户端 EntityMembersGetResponse响应=client.EntityMembersGet(请求); WriteLine(“Count:{0}”,response.EntityMembersInformation.MemberCount); //确认成员已返回 if(response.EntityMembersInformation.MemberCount>0) { System.Collections.ObjectModel.Collection members=response.EntityMembers.members; //请帮帮我 //使用name属性写入成员列表 Console.WriteLine()成员-名称属性); } 处理错误(响应、操作结果); } //创建服务客户端代理 私有静态服务客户端CreateMdsProxy(字符串mdsURL) { //使用URL创建端点地址 System.ServiceModel.EndpointAddress endptAddress=新的System.ServiceModel.EndpointAddress(mdsURL); //创建和配置WS-Http绑定 System.ServiceModel.WSHttpBinding wsBinding=新的System.ServiceModel.WSHttpBinding(); //创建并返回客户端代理 返回新的ServiceClient(wsBinding,endptAddress); } //处理操作结果 私有静态无效句柄错误(操作结果) { string errorMessage=string.Empty; if(result.Errors.Count()!=0) { 对于(int i=0;i您正在寻找:

foreach(var member in members)
{
    Console.WriteLine(member.MemberId.Id);
    foreach(var attribute in member.Attributes)
    {
        Console.WriteLine("Attribute: {0},\tValue: {1}", attribute.Identifier.Name, attribute.Value);
    }
}

谢谢,这很有帮助:)我把它简化为:foreach(成员中的var成员){Console.WriteLine(“代码:{0}名称:{1}”,member.MemberId.Code,member.MemberId.Name);}@publicgk,你能看看我的问题吗?因为我相信它是类似的:“request.MembersGetCriteria.MemberReturnOption=MemberReturnOption.DataAndCounts;//如果没有此选项,请求将不会返回memebers!”。此评论为我和团队成员节省了无数的尝试和错误。谢谢。