首页 > 解决方案 > 为什么在 NET 5 的单例服务中使用范围服务时迁移失败但编译没有?

问题描述

先介绍一些背景资料。我的项目是在 NET Core 3.1 中完成的。我创建并应用了迁移,没有任何问题。将项目更新到 NET 5 后,我开始收到Cannot consume scoped service from singleton错误消息。

这种情况是由于有一个作用域DbContext(它的默认生命周期)并试图将它与单例数据服务一起使用(通过将 aDbContext作为参数传递给数据服务构造函数)。

我知道为什么会发生这种情况,以及如何处理它,但我想了解它为什么在 NET Core 3.1 中有效(用于添加迁移以及编译和运行应用程序),而在 NET 5 中它仍然可以编译和运行,但是我不能在不传递范围而不是DbContextdataService 本身的情况下添加迁移。NET版本是否已更改?

标签: c#dependency-injection.net-5

解决方案


推荐阅读