【发布时间】:2014-09-26 13:05:59
【问题描述】:
如何将参数从客户端传递到服务器中的方法以获取实体数据。
在服务器端:
List<Foo> getFoos = _serverObject.GetFoos(p1, p2); //Here's how I am getting foo from another server
class FooProvider
{
public IQueryable<Foo> Foos
{
get{return getFoos.AsQueryable();}
}
}
在客户端:
var res = from f in ctx.Foos
where f.p1 == p1_val && f.p2 == p2_val
select f;
现在我想要得到的是所有 Foo 记录取决于 p1_val 和 p2_val 参数,但我必须将它传递给 _serverObject.GetFoos(p1, p2);这样p1 和p2 是从客户端而不是从服务器设置的。
请提出一些机制
【问题讨论】:
-
在 OData 服务中,您需要先拥有实体上下文,然后您可以对其应用过滤器并在客户端获取数据。但正如我正确理解的那样,您的上下文数据取决于过滤器参数。如果您考虑其他服务作为参数,它可以很容易地实现
-
我认为单一服务应该是可能的,因为客户端正在向服务器提供可查询的表达式,并且它应该从中加载参数。不是吗??
-
你需要传递一个谓词。看下面:stackoverflow.com/questions/1299534/…
-
这也是 OData 服务的问题,我不能使用谓词,因为表达式是在客户端的上下文中实现的,而不是将表达式从客户端传递到服务器然后实现它。
标签: c# wcf odata wcf-data-services