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 通过存储库查询并希望对其进行单元测试,可以在此处找到支持这一点的宝贵提示:()