我有一个 WCF RIA 服务,其方法返回 IQueryable<>。我想从控制台应用程序中使用 ClannelFactory 访问这些方法。我在客户端上有一个与我的 RIA 服务中的方法匹配的接口。当我运行服务器和客户端应用程序时,我可以看到调用了服务器方法并返回了一个 IQuery<> 对象。问题是在客户端我无法获取服务器发送的数据。我可以看到数据实际上是使用 Fiddler 来的,但我认为数据不能反序列化为 IQueryable。对我来说,接收到的数据类型并不重要。我会很高兴只有一个数组。但是因为服务中的方法返回 IQueryable,所以客户端上的 OperationContract 方法具有相同的类型。所以问题是如何从服务器获取数据,
服务器端:
public IQueryable<Customers> GetCustomers()
{
List<Customers> customersList = new List<Customers>();
customersList.Add(new Customer())
...
return customersList.AsQueryable();
}
客户端:
[ServiceContract]
public interface CustoemrsService
{
[OperationContract]
IQueryable<Customers> GetCustomers();
}
和 ChannelFactory 代码:
var endpointAddress = new EndpointAddress(_endpointAddress);
var channelFactory = new ChannelFactory<VfxSystemDomainServiceSoap>(new BasicHttpBinding());
var channel = channelFactory.CreateChannel(endpointAddress);
IQueryable<Customers> customersCollection = channel.GetVfxfopenQuery();