我在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/

10-13 08:15