如何将“ AddDbContext”与“ AddSingleton”一起使用?

时间:2018-12-04 11:40:52

标签: c# asp.net-core

在我的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));。它似乎有效。如果我这样做,事情会突然突然崩溃吗?

0 个答案:

没有答案