0

例如,当我通过 RIA 服务查询数据库时...

OrderWorkflowSLWCFRIA.Web.OrderWorkflowDomainContext db
   = new OrderWorkflowSLWCFRIA.Web.OrderWorkflowDomainContext();

db.Load(db.getWorkflowbyNameQuery(strCurrentLineText, intCustomerId)
     .Where(Workflow => Workflow.UserSelectable == true), load => { }, null);

... 将参数传递给底层域服务和在域服务端执行 where 和 orderby 子查询与在客户端指定它们之间有什么区别。我一直认为我应该在域服务端执行它,假设在客户端执行子查询会在执行子查询之前在客户端加载所有数据,但我读过一些让我相信的东西子查询实际上是传递给域服务的。这是真的还是假的?

4

1 回答 1

1

我想使用“子查询”一词,您打算使用 Where 和 OrderBy 子句。好吧,是的,您通常是对的,过滤客户端通常会强制服务器返回所有内容,然后客户端将过滤/排序,但是 WCF Ria 服务的主要目标之一确实是可以定义过滤、排序和甚至在客户端分组,然后在服务器端执行它们。

基本上,客户端和服务器之间有代码通过网络“序列化”您的 LINQ 表达式,然后在服务器端“反序列化”它。

请注意,术语“序列化”和“反序列化”在这种情况下是不正确的,但我认为它们说明了这一点。另外,请记住,此过程中未实现某些内容,因此您不能例如使用嵌套条件查询域服务,例如 Any()

于 2013-05-10T15:55:53.937 回答