在 EF Core 和 ASP.NET Core 中使用存储库和工作单元模式(重温)

2024-01-07

我正在关注本教程 https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/advanced#repository-and-unit-of-work-patterns适用于 EF Core 和 ASP.NET Core。有趣的是,本文指出“对于使用 EF 的应用程序来说,使用存储库和工作单元模式并不总是最佳选择”,但在 EF 5 的教程中,使用存储库和工作单元模式仍然是即使有单独的教程部分也会得到提升。

阅读旧文章 https://stackoverflow.com/questions/8749153/why-use-repository-pattern-or-please-explain-it-to-me据 stackoverflow 报道,应用它的原因主要是为了测试(依赖注入)。

进一步阅读本教程,其中提到“Entity Framework Core 实现了可用于测试的内存数据库提供程序”。我认为这是 EF5 时不存在的新功能。这是否意味着几乎没有任何理由将 EF Core 中的存储库和工作单元模式与 ASP.NET Core 一起应用?


造成如此混乱的原因有很多,也有很长的历史。 EF的DbContext用于不实现接口,因此它使得模拟很难用于测试目的。然而,这个问题在 EF 6 中得到了纠正,因此从那时起,即使出于测试目的,使用存储库/工作单元模式也绝对没有任何好处。

EF Core 是完全可端到端测试的,并且现在还具有内存数据库提供程序,这意味着您甚至不需要模拟它,尽管如果您愿意,您也可以这样做。

长话短说,转储存储库和工作单元模式。即使它们对测试有一些用处,它们也从来都不是一个好的解决方案,并且自 EF 6 以来,它们就完全没有用了。

现在……让火焰战争开始吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 EF Core 和 ASP.NET Core 中使用存储库和工作单元模式(重温) 的相关文章

随机推荐