C# MDS 2012列出WCF中产品实体的成员
我需要在C#中列出生产实体中的成员 下面是代码,但我不知道如何构建成员列表属性,例如集合中的名称。代码如下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
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!”。此评论为我和团队成员节省了无数的尝试和错误。谢谢。