怪奇物语

怪奇物语

首页 新随笔 联系 管理

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();
    }
}
posted on 2024-11-27 08:00  超级无敌美少男战士  阅读(24)  评论(0)    收藏  举报