Entity framework BreezeJS按子/扩展(1:Many)表过滤
我正在和微风一起工作,我很喜欢它,但是遇到一两个坚持的人,我希望能得到其中一个的一些帮助 我在database first模型的后端使用EF和SQL,并且与父表和子表有一对多关系。检索数据时,无论我如何尝试,在使用子id时都无法正确过滤数据。下面是代码: 客户端代码: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
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.的回答中都讨论了这一点