0

我定义我的接口在基础设施层,使用依赖注入,但是现在问题的基础设施层,我怎么能解决您在使用的DbContext接口的依赖性不增加参考EF DLL,在infrasturcure层和服务层。拆除联轴器和

回答

0

您可以修改T4文件(又名T4模板或.TT文件)与上下文一起创建的接口,甚至他们分成用于两个单独的T4文件,所以你可以把它们放在单独的组件。您也可以使上下文返回IQueryable而不是ObjectQuery,但是...

为了编写运行在数据库而不是内存中的优化查询,查询必须考虑到它们下方的技术,您不能编写通用查询,单元测试它们在内存列表中,然后期望它们能够正确转换为SQL,并且无例外地高效运行。 - 您必须在真实数据库上测试您的查询(使用演示数据)。

您应该做的是实现将DAL技术从其上层隐藏起来的服务,但在其实现中使用EF的全部功能以尽可能高效地工作。

可以使用测试数据库(例如,使用由测试类创建和启动的LOCALDB实例)对这些服务进行模拟,以测试它们上方的层以及服务本身可以与EF的使用一起进行测试。

几个许多培训相关链接:
Generic Repository With EF 4.1 what is the point
ASP.NET MVC3 and Entity Framework Code first architecture
Is UnitOfWork and GenericRepository Pattern redundant In EF 4.1 code first?
https://softwareengineering.stackexchange.com/questions/133448/unit-integration-testing-my-dal