我在ConfigureServices中说
services.AddDbContext<PwdrsDbContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("PwdrsDbConnection"));
});
RegisterServices(services);
在配置中我说
SeedData.SeedDatabase(app);
在静态种子方法中,我说
public class SeedData
{
public static void SeedDatabase(IApplicationBuilder app)
{
PwdrsDbContext context = app.ApplicationServices.GetService<PwdrsDbContext>();
}
}
当我运行它时说
无法从根提供程序解析作用域服务'Pwdrs.Infra.Data.Context.PwdrsDbContext'
我需要dbcontext来播种数据,但是我缺少什么呢?
最佳答案
您需要将服务从ConfigureServices方法分别注入到Configure
方法中:
public void Configure(
IApplicationBuilder app,
IServiceProvider services) // <- magic here
{
// ...
SeedData.SeedDatabase(services);
}
public class SeedData
{
public static void SeedDatabase(IServiceProvider services)
{
PwdrsDbContext context = services.GetRequiredService<PwdrsDbContext>();
}
}
关于c# - 尝试获取注入(inject)服务以在ASP.NET Core MVC中播种数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57434969/