在TempHire Sample中进行Breeze深层查询关系导航

时间:2013-08-09 15:11:21

标签: breeze

我在这里有另一个问题,工作单元(UoW)存储库模式。所以我喜欢UoW的存储库, TempHire 解决方案显示,非常好,我理解。但是,当您传递一个请求实体从父项.expand.select离开的查询时,EFContextProvider是否会调用该操作的存储库,或者是否直接转到{{ 1}}。我稍微研究了一下,我发现Context有它自己的上下文实例..这让我担心,因为我使用存储库模式抽象了一些东西,但是我不认为它们被应用了在执行这些嵌套操作时。谁能为我证实这一点?如果这是正确的,那么无论如何都要设置它以便进入我的存储库,模拟EFContextProvider这些嵌套调用吗?

感谢Guys和Gals。保持Breezey

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

EFContextProvider为breeze.js提供了两件事 - 元数据和SaveChanges。 查询转到UoW存储库(请查看https://github.com/IdeaBlade/Breeze/blob/master/Samples/TempHire/TempHire/Controllers/ResourceMgtController.cs)。