过滤BreezeJS应用程序中不存在的查询';不要在服务器上使用实体框架

过滤BreezeJS应用程序中不存在的查询';不要在服务器上使用实体框架,breeze,Breeze,我尝试采用BreezeNoDb示例应用程序中采用的方法,并将其挂接到不使用实体框架的现有应用程序的后端(它具有我尝试重用的现有业务对象) 我正在努力理解如何最好地将控制器接收到的查询转换为对业务对象的调用以获取/保存数据,以及如何优化这些查询 目前,在NoDb示例应用程序中,服务器上的TodoContext类充当TodoList对象的内存数据库,并通过TodoRepository类将这些对象呈现给TodoController。TodoController然后将此列表作为单个IQueryable

我尝试采用BreezeNoDb示例应用程序中采用的方法,并将其挂接到不使用实体框架的现有应用程序的后端(它具有我尝试重用的现有业务对象)

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

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

现在,假设有大量的
TodoList
存储在某种形式的数据存储中(例如,现有业务对象、非sql db、mongo db、xml文件等),我希望避免将它们都从存储中加载到内存对象中,以便能够将过滤结果返回给客户端

如何使用客户端请求中可用的筛选条件来减少从服务器上的数据存储中提取的数据量?例如,我希望检索包含任何包含“buy milk”的
TodoList
项目的
TodoItem
集合,但我不希望必须将每个
TodoList
及其所有详细项目加载到内存中才能找到。我更愿意将odata筛选条件转换为本机数据存储查询(或者在我的情况下是对现有业务对象的调用)

希望这是有道理的

谢谢!
Richard

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

我们希望在下个月左右得到一个MongoDb或RavenDb样本,以证明这一点