如何从上下文设定数据库种子

How to seed a database from the context

提问人:Iqryn 提问时间:4/6/2023 最后编辑:Peter CsalaIqryn 更新时间:4/6/2023 访问量:96

问:

我正在为求职面试做一个 ASP.NET 核心 MVC 演示项目。我正在使用的书向我展示了如何从空项目模板连接 MVC 项目。我在数据库上下文类的构造函数中调用 Database.EnsureCreated(),以便在应用程序运行时创建 MS SQL Server Express 数据库。这对于演示项目来说已经足够了,因为它只需要在本地运行。但是,在这种情况下,为数据库设定种子的最佳方法是什么?我想做到以下几点:

public class DemoDataContext : DbContext
{
    public DbSet<Item> Items { get; set; }

    public DemoDataContext(DbContextOptions<DemoDataContext> options) : base(options)
    {
        Database.EnsureCreated();

        if (!Items.Any())
        {
            Items.Add(new Item
            {
                Id = 1,
                Name = "Item" 
            });
        }

        SaveChanges();
    }
}

但是,我在 DbSet 方法上收到 null 警告,所以我不知道是否有更正确的方法可以做到这一点。不过,我确实想让事情变得简单。

asp.net ASP.Net-Core 框架实体 种子

评论


答:

0赞 Qing Guo 4/6/2023 #1

以在应用程序运行时创建 MS SQL Server Express 数据库。

可以参考第 4 部分,向 ASP.NET Core MVC 应用添加模型第 5 部分,在 ASP.NET Core MVC 应用中使用数据库

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

        public DbSet<Item> Items { get; set; }
    }

然后像这样为数据库设定种子,然后添加种子初始值设定项

此外,您可以 数据播种 了解更多信息。