Entity Framework核心3:关于DBContext接口的好做法?
Entity Framework Core 3: Interface on DBContext good practice?
在 Entity Framework Core 3.1 中,在 DBContext 上创建接口是好习惯吗?微软有这方面的文档吗?
我们知道在单元测试中模拟 DBContext 是不好的做法,但是在它上面创建一个接口怎么样?
https://docs.microsoft.com/en-us/ef/core/testing/
"However, we never try to mock DbContext or IQueryable. Doing so is
difficult, cumbersome, and fragile. Don't do it."
资源: Why DbContext doesn't implement IDbContext interface?
如果您的 objective 是为了促进与 DbContext 交互的单元测试代码,那么我建议考虑实施存储库模式以及工作单元来管理 DbContext 生命周期范围和提交。我在各种答案中概述了实现灵活且易于测试的存储库 类 的有效方法,但这个可能是最好的总结:()
我建议避免通用存储库实现并利用 EF IQueryable
支持的强大功能来构建一个极其简单的模拟层,从而提供高效灵活的查询。
最后一个细节是,如果您确实希望支持 async
通过存储库查询并希望对其进行单元测试,可以在此处找到支持这一点的宝贵提示:()
在 Entity Framework Core 3.1 中,在 DBContext 上创建接口是好习惯吗?微软有这方面的文档吗?
我们知道在单元测试中模拟 DBContext 是不好的做法,但是在它上面创建一个接口怎么样?
https://docs.microsoft.com/en-us/ef/core/testing/
"However, we never try to mock DbContext or IQueryable. Doing so is difficult, cumbersome, and fragile. Don't do it."
资源: Why DbContext doesn't implement IDbContext interface?
如果您的 objective 是为了促进与 DbContext 交互的单元测试代码,那么我建议考虑实施存储库模式以及工作单元来管理 DbContext 生命周期范围和提交。我在各种答案中概述了实现灵活且易于测试的存储库 类 的有效方法,但这个可能是最好的总结:(
我建议避免通用存储库实现并利用 EF IQueryable
支持的强大功能来构建一个极其简单的模拟层,从而提供高效灵活的查询。
最后一个细节是,如果您确实希望支持 async
通过存储库查询并希望对其进行单元测试,可以在此处找到支持这一点的宝贵提示:(