如何使用 "AddDbContext" 和 "AddSingleton"?

17 浏览
0 Comments

如何使用 "AddDbContext" 和 "AddSingleton"?

在我的Web应用程序中,我有一个需要在请求之间保持一致的有状态对象,所以我将其注册为单例对象:

services.AddSingleton();

现在,在某个地方,GamePlay 需要使用一个 MyDbContext,我使用以下方式添加它,因为我需要传入一个特定的构造函数参数,其类型为 DbContextOptions

services.AddDbContext(options => options.UseInMemoryDatabase(databaseName: "testdb"));

然而,在运行时,这会引发以下错误:

InvalidOperationException: 无法从单例 'IGamePlay' 使用范围服务 'MyDbContext'。

如何使用 AddDbContext 注册一个与单例依赖关联的依赖项?

编辑:(回答评论)我找到了很多答案,但没有解决问题。最终,我使用 services.AddSingleton(new MyDbContext(new DbContextOptionsBuilder().UseInMemoryDatabase(databaseName: "testdb").Options)); 注册了 MyDbContext。它似乎有效。如果我以这种方式做,会突然出现什么严重问题吗?

0