C# 使用intellisense调用wcf数据服务操作
我有以下WCF数据服务C# 使用intellisense调用wcf数据服务操作,c#,metadata,wcf-data-services,C#,Metadata,Wcf Data Services,我有以下WCF数据服务 [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class MyWcfDataService: DataService<MyEntities> { // This method is called only once to initialize service-wide policies. public static void
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyWcfDataService: DataService<MyEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
[WebGet]
public IEnumerable<Customer> GetActiveCustomers()
{
return this.CurrentDataSource.Customers.Where(x=> ! x.IsDeleted);
}
}
我知道我可以通过请求http://localhost:10144/Services/MyWcfDataService.svc/GetActiveCustomers
。但是VisualStudio下载元数据的意义是什么呢。因为我也从.net应用程序中使用该服务,所以如果我可以使用intellicense访问该方法,那就太好了
换句话说在我的客户上,当我添加对该服务的引用时,我可以看到:
<Schema Namespace="WebService.Data" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
<EntityContainer Name="MyEntities" >
<EntitySet Name="Customers" ..... etc />
... etc
<FunctionImport Name="GetActiveCustomers" ReturnType="Collection(Customer)" ... etc />
... 等
在
service.edmx
上。Visual Studio应该使用它来调用这些方法吗?恐怕在OData V3(WCF数据服务)上工作的添加服务引用不支持在.NET客户端中自动生成服务操作。但是,您可以在生成的服务上下文类中编写自己的方法来调用操作。像这样:
IEnumerable<Customer> GetActiveCustomers()
{
Uri requestUri = new Uri(this.BaseUri.OriginalString.Trim('/') + "/GetActiveCustomers");
return this.Execute<Customer>(requestUri);
}
IEnumerable GetActiveCustomers()
{
Uri requestUri=新Uri(this.BaseUri.OriginalString.Trim('/')+“/GetActiveCustomers”);
返回this.Execute(requestUri);
}
有了它,您可以编写var-actCusts=context.GetActiveCustomers()
并将结果返回到.NET应用程序中
IEnumerable<Customer> GetActiveCustomers()
{
Uri requestUri = new Uri(this.BaseUri.OriginalString.Trim('/') + "/GetActiveCustomers");
return this.Execute<Customer>(requestUri);
}