我是WCF的新手,我需要幫助理解一些東西。客戶端過濾如何爲WCF IQueryable方法工作?
我創建了一個WCF數據服務,該服務返回由服務從實體映射的DTO。在我的服務合同界面上,我有一些方法GetMyDto
返回IQueryable<MyDto>
。
我在MVC應用程序中添加了對此服務的服務引用。接口和代理客戶端然後返回List<MyDto>
(或者我可以選擇一些其他集合類型)而不是IQueryable<MyDto>
。
據我所知IQueryable
不能公開給客戶端,但如果我在客戶端上篩選(即MyServiceClient.GetMyDto().Where(x => x.SomeValue == 1)
)它是否過濾客戶端或服務器上?
我的理解是它可以使用odata,但是我看到的所有示例都直接將實體模型暴露給客戶端,我不這樣做。我正在使用DTO。
我的侷限性是什麼?當我撥打服務電話時,請幫助我瞭解到底發生了什麼。