0

这几天我一直在寻找答案以找出答案,但我无法得到任何答案,这就是我决定在这里写的原因。

问题如下:我有一个数据服务,其中模型由数据服务提供者创建,在本例中是反射提供者。很简单。但是我们希望使用查询拦截器创建数据模型,而不是使用查询拦截器来过滤数据。

我想要实现什么:/service.svc/search?fromDate=x&toDate=y

我有一个名为 search 的模型,它是搜索数据和搜索结果的模型,然后反射提供程序将取两个参数 fromDate 和 toDate,将它们保存为变量,然后将它们作为参数放入存储的 sql 过程中。然后搜索结果将保存在模型中。

我觉得很难解释这一点,因为我猜这不是您使用查询拦截器和反射提供程序所做的常见事情。

通常使用查询拦截器并将其应用于已完成的数据模型以过滤掉模型的某些部分。

有谁知道如何实现这一目标?

我知道如何参数化查询拦截器 - http://ashwini47-tts.blogspot.in/2012/03/how-to-parametrized-queryinterceptor-in.html - 但不知道如何将参数发送到 dbcontext /对象上下文。

4

1 回答 1

0

查询拦截器并不是要为您解决这个问题。你有两个选择:

1) 接受两个参数并返回一组结果的服务操作。非常容易实现,但您还需要公开“所有”结果集。不确定这是否适合您。有可能的解决方法,但它们有些复杂,并且比下面的#2 更复杂。

2) 将查询描述为 OData 查询。所以类似于 ~/searchResults?$filter=date gt 和 date lt 。然后从您的 searchResults IQueryable 属性返回一个自定义 IQueryable 实现,该实现处理包含过滤器的表达式树,提取 from 和 to 值并通过运行存储过程评估查询。这肯定是更多的工作,但它是 OData 查询方式,#1 中的服务操作不适合您的空间。

于 2012-10-03T22:34:05.043 回答