我有一个多对多关系,有P
,PF
和F
,我想使用P
到{{1 }}。喜欢:
F
和类:
PF
如何过滤?
答案 0 :(得分:0)
可以使用自己的查询,该查询将保留在where
上:
..predicate = QueryPredicate(
" exists (select f.cod from pf where pf.fcod = @fcod and pf.pcod = p.cod) ",
{ "fcod": 1 });
如果在代码查询中使用join
,则表名将更改。
答案 1 :(得分:0)
QueryPredicate 不是一个很好的解决方案,因为您不能在连接表中设置条件(我们不知道连接表的别名)。我创建了自己的程序 - 试试看:
QueryExpression<dynamic, dynamic> RelationWhereExt(Query query, List<String> links) {
ManagedEntity e = query.entity;
KeyPath path;
ManagedPropertyDescription property;
links.forEach((link) {
property = e.properties[link];
if (path==null){
// рутовое условие
path = KeyPath(property);
} else {
// следующие условия
path.add(property);
}
if (property is ManagedRelationshipDescription) {
e = (property as ManagedRelationshipDescription).destinationEntity; // меняем entity
}
});
QueryExpression<dynamic, dynamic> queryExpression = QueryExpression<dynamic, dynamic>(path);
(query as MySqlQuery).expressions.add(queryExpression);
return queryExpression;
}
在你的情况下: RelationWhereExt(query, ['pfSet', 'f']).isNotNull();