在我的Web应用程序中,我有一个有状态对象,请求之间的状态对象必须相同,因此我将其注册为单例:
services.AddSingleton<IGamePlay, GamePlay.GamePlay>();
现在,在行的某处,GamePlay
需要消耗一个MyDbContext
,我使用以下命令添加它,因为我需要传入类型为DbContextOptions<MyDbContext>
的特定构造函数参数
services.AddDbContext<MyDbContext>(options => options.UseInMemoryDatabase(databaseName: "testdb"));
但是,此操作在运行时失败,并显示以下错误:
InvalidOperationException:无法使用单例“ IGamePlay”中的作用域服务“ MyDbContext”。
我如何在AddDbContext
中注册与单例依赖项一起使用的依赖项?
编辑:(回复评论),我找到了很多答案,但没有一个能解决问题。我最终使用MyDbContext
注册了services.AddSingleton<MyDbContext>(new MyDbContext(new DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase(databaseName: "testdb").Options));
。它似乎有效。如果我这样做,事情会突然突然崩溃吗?