0

我正在尝试调整 Breeze NoDb示例应用程序中采用的方法,并将其连接到不使用实体框架的现有应用程序后端(它具有我正在尝试重用的现有业务对象)。

我正在努力了解如何最好地将控制器收到的查询转换为对我的业务对象的调用以获取/保存数据,以及如何优化这些查询。

目前在 NoDb 示例应用程序中TodoContext,服务器上的类充当对象的内存数据库,并通过类将TodoList这些对象呈现给. 然后将此列表公开为单个操作。这允许客户端将 odata 过滤条件传递给服务器并返回过滤后的集合(如果项目指定了 odata 搜索过滤器)。我相信这一切都会自动神奇地发生,这要归功于 BreezeController。TodoRepositoryTodoControllerTodoControllerIQueryable<TodoList> TodoList()TodoList

现在,假设您TodoList在某种形式的数据存储中存储了大量的存储到内存对象中,以便能够将过滤后的结果返回给客户端。

您将如何使用客户端请求中可用的过滤条件来减少从服务器上的数据存储中提取的数据量?例如,我想检索包含“买牛奶”的TodoList项目集合TodoItem,但我不想将TodoList所有详细项目加载到内存中以找出答案。我宁愿将 odata 过滤条件转换为本地数据存储查询(或者在我的情况下调用我现有的业务对象)。

希望这是有道理的。

谢谢!理查德

4

1 回答 1

0

.NET 上可用的大多数第三方数据存储都提供了 IQueryable 实现。如果您为每个资源返回基本数据存储 IQueryable,那么微风服务器将组成一个复合 IQueryable(由您的基本 IQueryable 和应用的任何客户端过滤器组成),并将其发送到您的数据存储。这意味着完全组合的查询是由您的数据存储执行的。

我们希望在下个月左右有一个 MongoDb 或 RavenDb 样本,这证明了这一点。

于 2013-04-03T02:02:51.470 回答