我在我的项目中使用ASP.Net Core 2和Entity framework core 2与内存数据库,我在一个方法中调用我使用的方法:

var serviceCollection = DependencyServiceProvider.ServiceProvider;
List<KpiType> types = await serviceCollection.GetService<KpiTypeService().List();

问题是此调用不返回数据,因为服务提供者不使用现有的dbcontext但由于某种原因创建了新的dbcontext . 一切都可以正常使用SQL数据库,但是对于In-memory,它没有,我试图找到如何使其工作的方法,但到目前为止,我只找到了测试项目,集成测试等的例子 . 我想知道是否有一个简单的解决方案,我必须在Startup.cs中添加一些代码,因为我想保持应用程序代码不变 .

我的Startup cs在ConfigureServices(IServiceCollection服务)下有这样的行:

services.AddDbContext<MyFcDbContext>(x => x.UseInMemoryDatabase(databaseName: "db"));

services.AddTransient<KpiTypeService, KpiTypeService>();

DependencyServiceProvider.ServiceProvider = services.BuildServiceProvider();