IQueryable<> を返すメソッドを持つ WCF RIA サービスがあります。コンソール アプリケーションから 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();