gpt4 book ai didi

c# - ASP.NET Core 2 种子数据库

转载 作者:可可西里 更新时间:2023-11-01 08:14:58 26 4
gpt4 key购买 nike

<分区>

我已经在 SO 上看到了一些与此相关的类似示例,但我对这种语言的了解还不够多,还看不出我做错了什么。我拼凑了一个演示以了解更多信息,但我在为数据库做种时遇到问题。

我收到以下错误:

InvalidOperationException: Cannot resolve scoped service 'demoApp.Models.AppDbContext' from root provider.

Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(Type serviceType, ServiceProvider serviceProvider)

这是有问题的三个文件:

模型/AppDbContext.cs

public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{

}
public DbSet<Product> Products{ get; set; }
public DbSet<Category> Categories { get; set; }
}

模型/DBInitializer.cs

public static class DbInitializer
{
public static void Seed(IApplicationBuilder applicationBuilder)
{
//I'm bombing here
AppDbContext context = applicationBuilder.ApplicationServices.GetRequiredService<AppDbContext>();

if (!context.Products.Any())
{
// Add range of products
}

context.SaveChanges();
}

private static Dictionary<string, Category> _categories;
public static Dictionary<string, Category> Categories
{
get
{
if (_categories == null)
{
// Add categories...
}

return _categories;
}
}
}

Startup.cs

public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<ICategoryRepository, CategoryRepository>();
services.AddTransient<IProductRepository, ProductRepository>();

services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
app.UseStatusCodePages();

// Kersplat!
DbInitializer.Seed(app);
}
else ...

app.UseStaticFiles();
app.UseMvc(routes => {...});
}

有人可以帮助解释我做错了什么以及如何补救吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com