![](/img/trans.png)
[英]Breeze is excluding entities with foreign key of null when they are expanded
[英]How to use predicates on expanded entities in breeze
可以说我有一个名为Foo
实体,它有一个Bars
列表。 Bars
还包含一个名为isDeleted
的字段,该字段指示特定的栏已被软删除。 我希望能够查询特定的Foo
并使用Breeze过滤掉Javascript文件内部被软删除的Bars
。 我以为这会工作...
var query = breeze.EntityQuery.from('Foo')
.where('Id', '==', id).and('Bars.IsDeleted', '==', false)
.expand('Bars');
但事实并非如此,有人可以告诉我如何轻松进行此操作吗? 如果唯一的解决方案是在BreezeController
编码方法并使用标准的LINQ语法,那么我很好,但是我只想看看它是否首先在Breeze中可以工作。
查询上的多个.where()
链会自动“与”在一起 。 如果要显式地执行此操作,则需要使用breeze.Predicate对象作为where参数,如下所示:
var query = breeze.EntityQuery.from('Foo').expand('Bars')
.where(new breeze.Predicate('Id', 'eq', id)
.and('Bars.IsDeleted', 'eq', false));
您还可以选择对Predicate
对象使用.or
或任何其他方法,其中大多数方法都正确链接。
编辑 :这是使用多个.where
调用的示例:
var query = breeze.EntityQuery.from('Foo').expand('Bars')
.where('Id', 'eq', id)
.where('Bars.IsDeleted', 'eq', false);
目前,Breeze不支持“展开”过滤。 即仅返回符合特定条件的“扩展”实体。 这是因为很少有后端服务器和持久性库提供支持此功能的机制。
但是,您可能要做的就是反转查询以获取所需的内容。 即
var query = breeze.EntityQuery.from('Bars').expand('Foo')
.where(new breeze.Predicate('Foo.Id', 'eq', id)
.and('IsDeleted', 'eq', false));
假设每个“ Bar”实体都有一个标量“ Foo”属性。
这将仅返回您希望每个“酒吧”及其关联的“ Foo”实体。 之所以可行,是因为Breeze允许嵌套标量谓词。 即“ Foo.Id”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.