SeedData 怎么写 数据库上下文 怎么拿到
依赖注入
builder.Services.AddDbContext<BlazorMovieContext>(options =>
options.UseSqlServer(
builder.Configuration.GetConnectionString("RazorPagesMovieContext")
?? throw new InvalidOperationException(
"Connection string 'RazorPagesMovieContext' not found."
)
)
);
DbContext
public class BlazorMovieContext : DbContext
{
public BlazorMovieContext(DbContextOptions<BlazorMovieContext> options)
: base(options) { }
public DbSet<BlazorMovie.Models.Movie> Movie { get; set; } = default!;
}
手动拿到数据库上下文
// 👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
using var context = new BlazorMovieContext(serviceProvider.GetRequiredService<DbContextOptions<BlazorMovieContext>>());
SeedData.cs
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using var context = new BlazorMovieContext(
serviceProvider.GetRequiredService<DbContextOptions<BlazorMovieContext>>()
);
if (context == null || context.Movie == null)
{
throw new ArgumentNullException("Null RazorPagesMovieContext");
}
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
context.Movie.AddRange(
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateOnly.Parse("1989-2-12"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateOnly.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateOnly.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateOnly.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
context.SaveChanges();
}
}