我定义我的接口在基础设施层,使用依赖注入,但是现在问题的基础设施层,我怎么能解决您在使用的DbContext接口的依赖性不增加参考EF DLL,在infrasturcure层和服务层。拆除联轴器和
拆除联轴器和
回答
如果您需要将EF完全隐藏在您的应用程序中,您需要使用repository pattern,将EF隐藏在存储库后面并生成(或写入)POCO实体。
如果你更务实,你可以use generic repositories with IQueryable support,它允许一个伟大的开发和单元测试经验,但什么选择取决于你。
您可以修改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
- 1. Laravel静态立面和联轴器
- 2. 态关联和拆分表
- 3. 拆分和联接问题
- 4. 移调和拆除
- 5. 拆除销毁控制器
- 6. Git拆分和清除
- 7. PyQtGraph网格联轴
- 8. 分别去除NA和索引标签的X轴和Y轴
- 9. 消除轴消除
- 10. 枢轴和过滤器
- 11. 拆除容器整个表单
- 12. 拆分关联数组
- 13. 除了轴(R)
- 14. 在boost.test中反复设置和拆除?
- 15. 使用SimpleHtmlDom,如何拆除和更换
- 16. C#如何拆除和清理
- 17. 拆列成行,不是经典枢轴
- 18. 拆分四元数到轴旋转
- 19. Grails的删除和级联
- 20. 级联更新和删除
- 21. NHibernate和级联删除
- 22. Python - 删除轴刻度标签,保留刻度和轴标签
- 23. R - 基线图 - 如何去除X轴和Y轴线
- 24. 用matplotlib去除x轴和y轴的黑线
- 25. 删除枢轴标题和标题
- 26. 从jqplot中删除x和y轴线
- 27. Matplotlib图:删除轴,图例和空白
- 28. SQLite的删除列和级联删除
- 29. PrimeFaces拆分删除
- 30. 删除轴刻度