Javascript 如何在breeze中对扩展实体使用谓词

Javascript 如何在breeze中对扩展实体使用谓词,javascript,c#,linq,breeze,Javascript,C#,Linq,Breeze,假设我有一个名为Foo的实体,它有一个条的列表条形图还包含一个名为isDeleted的字段,表示特定条形图已被软删除。我希望能够查询特定的Foo,并使用Breeze过滤掉Javascript文件中被软删除的条。我想这会有用的 var query = breeze.EntityQuery.from('Foo') .where('Id', '==', id).and('Bars.IsDeleted', '==', false) .expand('Bars'); 然而

假设我有一个名为
Foo
的实体,它有一个
条的列表<代码>条形图
还包含一个名为
isDeleted
的字段,表示特定条形图已被软删除。我希望能够查询特定的
Foo
,并使用Breeze过滤掉Javascript文件中被软删除的
条。我想这会有用的

var query = breeze.EntityQuery.from('Foo')
        .where('Id', '==', id).and('Bars.IsDeleted', '==', false)
        .expand('Bars');
然而事实并非如此,有人能告诉我如何在微风中做到这一点吗?如果唯一的解决方案是在
BreezeController
中编码一个方法,并使用标准LINQ语法,那么我对此没有意见,但我只想看看它是否能在Breeze中首先工作。

Multiple
.where()
链接查询。如果要明确地执行此操作,需要使用对象作为where参数,如下所示:

var query = breeze.EntityQuery.from('Foo').expand('Bars')
    .where(new breeze.Predicate('Id', 'eq', id)
                     .and('Bars.IsDeleted', 'eq', false));
您还可以选择在
谓词
对象上使用
。或
或任何其他方法,其中大多数方法正确链接

编辑:以下是使用多个
的示例。其中
调用:

    var query = breeze.EntityQuery.from('Foo').expand('Bars')
                .where('Id', 'eq', id)
                .where('Bars.IsDeleted', 'eq', false);

目前,Breeze不支持“扩展”的过滤。i、 e.仅返回满足特定标准的“扩展”实体。这是因为很少有后端服务器和持久性库提供支持这一点的机制

但是,您可以做的是将查询倒置,以获得所需的内容。i、 e

var query = breeze.EntityQuery.from('Bars').expand('Foo')
    .where(new breeze.Predicate('Foo.Id', 'eq', id)
                 .and('IsDeleted', 'eq', false));
这假设“Bar”实体都有标量“Foo”属性

这将只返回您想要的“条”及其关联的“Foo” 实体。这是因为Breeze允许嵌套标量谓词。i、 e.“Foo.Id”