我是WCF的新手,我需要帮助理解一些东西。客户端过滤如何为WCF IQueryable方法工作?
我创建了一个WCF数据服务,该服务返回由服务从实体映射的DTO。在我的服务合同界面上,我有一些方法GetMyDto
返回IQueryable<MyDto>
。
我在MVC应用程序中添加了对此服务的服务引用。接口和代理客户端然后返回List<MyDto>
(或者我可以选择一些其他集合类型)而不是IQueryable<MyDto>
。
据我所知IQueryable
不能公开给客户端,但如果我在客户端上筛选(即MyServiceClient.GetMyDto().Where(x => x.SomeValue == 1)
)它是否过滤客户端或服务器上?
我的理解是它可以使用odata,但是我看到的所有示例都直接将实体模型暴露给客户端,我不这样做。我正在使用DTO。
我的局限性是什么?当我拨打服务电话时,请帮助我了解到底发生了什么。