Entity framework BreezeJS按子/扩展(1:Many)表过滤

Entity framework BreezeJS按子/扩展(1:Many)表过滤,entity-framework,breeze,parent-child,Entity Framework,Breeze,Parent Child,我正在和微风一起工作,我很喜欢它,但是遇到一两个坚持的人,我希望能得到其中一个的一些帮助 我在database first模型的后端使用EF和SQL,并且与父表和子表有一对多关系。检索数据时,无论我如何尝试,在使用子id时都无法正确过滤数据。下面是代码: 客户端代码: var query = breeze.EntityQuery.from("Parent") var predicateChild = new breeze.Predicate('CHILD', 'any', 'CH

我正在和微风一起工作,我很喜欢它,但是遇到一两个坚持的人,我希望能得到其中一个的一些帮助

我在database first模型的后端使用EF和SQL,并且与父表和子表有一对多关系。检索数据时,无论我如何尝试,在使用子id时都无法正确过滤数据。下面是代码:

客户端代码:

    var query = breeze.EntityQuery.from("Parent")
    var predicateChild = new breeze.Predicate('CHILD', 'any', 'CHILD_ID', '==', childId);

    query = query.where(predicateChild );
    var promise = collectionsManager
                .executeQuery(query)
                .then(querySuccess)
                .catch(queryFailed);
服务器代码:

    [HttpGet]
    [BreezeQueryable(MaxExpansionDepth = 5)]
    public IQueryable<PARENT> Parent()
    {
        return _contextProvider.Context.PARENT;
    }
[HttpGet]
[BreezeQueryable(MaxExpansionDepth=5)]
公共IQueryable父项()
{
返回_contextProvider.Context.PARENT;
}
查询确实有效,它找到了正确的父级(因此似乎正在使用childId),但返回了所有子级,而不仅仅是谓词中给定的子级

我已经尽我所能得到我想要的结果,但我确信我在服务器代码或EF层中遗漏了一些东西

为了使其正常工作,我更改了服务器代码以使用子表而不是父表。如果在EF中设置了从子项到父项的导航,这会起作用,但在后续下游串接数据时会出现循环引用(我需要这样做)


非常感谢您的帮助。

您的查询在
父项上有一个过滤器。它不会过滤相关的
实体,这似乎是您问题的目的

具体地说,您是一个
父项
的查询筛选器,该父项至少有一个
子项
,其
子项ID==childId
。它不会返回任何写入的
实体。如果您添加了一个
expand
子句,您将得到
父实体的所有子实体,而不仅仅是
子实体ID==childId
的子实体

EF和OData不支持过滤通过
扩展返回的实体。很抱歉。我希望他们这样做

这个问题经常出现。最近,许多s.O.的回答中都讨论了这一点