我讨厌使用服务引用有很多不同的原因,而是使用接口和System.ServiceModel.ChannelFactory
我希望能够在连接到WCF数据服务时使用类似的东西。
我的意思是当我创建DataService Endpoint时,它只是DataService,为什么我不能在创建客户端时创建DataServiceContext并且可以访问MyDataService中的所有IQueryables。
例如
通用
public interface IMyDataService
{
public IQueryable<Foo> Foos {get;set;}
public IQueryable<OtherFoo> OtherFoos {get;set;}
}
服务器
public class MyDataService : IMyDataService
{
public IQueryable<Foo> Foos {get;set;}
public IQueryable<OtherFoo> OtherFoos {get;set;}
}
public class DataService : DataService<MyDataService>
{
}
客户端
var context = new DataServiceContext<IMyDataService>();
var foo = context.Foos.First(f=>f.Id = 5);
var otherFoos = contact.OtherFoos.Where(of=>of.width > 6);
编辑:我有一个解决方案,我在其中创建一个IMyDataService的代理类,但是我的理解是,这在服务器上会很难。任何人都知道使用此处详述的方法创建代理对性能的影响:http://www.codeproject.com/KB/cs/dynamicproxy.aspx