WCF如何正确传递任意数据存储查询?

时间:2011-01-04 19:25:02

标签: c# .net database wcf

我有针对某些数据库编写的WCF服务,我需要根据复杂查询过滤和返回数据。最好的方法是什么?

  • 我知道这是一个不好的做法,我应该提供单独的服务方法,如GetOrdersByProductId(对象ID),但我的查询非常庞大,大约15个谓词= 225个函数 - 没有意义。
  • 此处不提供RIA服务。
  • 我可以使用MetaLinq序列化表达式Tree,但我认为对服务器执行任意Lambda比纯SQL查询更危险,你可以在那里调用任何函数。

1 个答案:

答案 0 :(得分:4)

查询的复杂程度无关紧要。重要的是如何使用它们。

如果您的调用者需要传递15个参数以填充查询中的15个谓词,那么他们必须传递它们 - 就这么简单。创建“QueryParameters”类而不是使用15个单独的参数,但需要提供信息。

不要让服务的来电者随意发明新的查询。您应该决定哪些查询可用,以及如何指定参数。然后,只需将这些参数公开给您服务的调用者。