TempHire示例中的Breeze深度查询关系导航

TempHire示例中的Breeze深度查询关系导航,breeze,Breeze,这里我还有一个关于工作单元(UoW)和存储库模式的问题。因此,我喜欢temphere解决方案显示的UoW存储库,非常好,我理解这一点。但是,当您传入一个请求实体为。展开或。从父项中选择的查询时,EFContextProvider是调用存储库以执行该操作,还是直接进入上下文。我稍微研究了一下,发现EFContextProvider有自己的上下文实例。。这让我担心,因为我已经使用repository模式抽象出了一些东西,但是我认为在执行这些嵌套操作时不会应用它们。有人能帮我确认一下吗?如果这是正确的

这里我还有一个关于工作单元(UoW)存储库模式的问题。因此,我喜欢temphere解决方案显示的UoW存储库,非常好,我理解这一点。但是,当您传入一个请求实体为
。展开
。从父项中选择
的查询时,EFContextProvider是调用存储库以执行该操作,还是直接进入
上下文
。我稍微研究了一下,发现
EFContextProvider
有自己的上下文实例。。这让我担心,因为我已经使用repository模式抽象出了一些东西,但是我认为在执行这些嵌套操作时不会应用它们。有人能帮我确认一下吗?如果这是正确的,是否还有其他方法来设置它,以便它将进入我的存储库,它模拟了这些嵌套调用的
DbContext


谢谢各位。Keep it Breezey

EFContextProvider为breeze.js提供了两件事—元数据和保存更改。
查询将转到UoW存储库(请查看)。

在TempHire中实现的存储库将为任何查询返回基本IQueryable。在执行查询之前,只需将.expand或.select附加到基IQueryable。EFContextProvider从不调用存储库。WebAPI控制器调用存储库以获取基本IQueryable,存储库从EFContextProvider内部的DbContext获取该基本IQueryable。存储库可以进一步附加到IQueryable,WebApi控制器也可以在最终IQueryable返回到执行它的Breeze.NET之前附加到IQueryable。换句话说,无论您是按原样执行查询还是对其执行.expand或.select,存储库中返回基本IQueryable的所有逻辑都将适用。

是的,我知道他们会转到repo进行初始请求,我更感兴趣的是深度查询。基本上,我也需要一个访问孩子和家长的存储库模式。我想我真正的问题是,我可以限制IQueryable吗?我有一些行要限制给某些用户,我可以使用父级的存储库模式轻松地做到这一点,但是,附加查询可能会返回受限制的数据。有什么见解吗?是的,你能做到。您可以使用限制数据集的“Where”子句组成所需的任何基本IQueryable。当客户端添加.expand或.select时,它将应用于受限制的数据集。不过,我应该指出,您不能限制.expand。expand直接传递到实体框架,因此客户机可能会通过您的导航路径之一请求不受限制的数据。许多开发人员不允许。为此,请扩展。