首页 > 解决方案 > Entity Framework Core 种子数据

问题描述

所以我有一个 Entity Framework Core 第一个数据库和一个 .Net Core 应用程序。

我想在创建数据库时向其中添加种子数据。我知道 FluentAPI 有 HasData 方法,但这不是我想要的。

创建数据库后,我想使用随机生成的密码(每次都不同)创建一个用户,该密码将保存在服务器中的文件中。

我不能使用 HasData 方法,因为它每次都会创建相同的密码。

所以我的问题是:除了 HasData 方法之外,还有其他方法可以将种子数据添加到 Entity Framework Core Code First 数据库

标签: c#.net-coreentity-framework-core

解决方案


是的!有一种方法!您可以执行以下操作:

public static class DatabaseInitializer
{
    public static void Initialize(YourDbContext dbContext)
    {
        dbContext.Database.EnsureCreated();
        if (!dbContext.Users.Any())
        {
            // Write you necessary to code here to insert the User to database and save the the information to file.

        }

    }
}

该类的Configure方法Startup如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, YourDbContext dbContext)
{
   // other configurations
   ..............

   DatabaseInitializer.Initialize(dbContext);

   ..............
   // other configurations
}

Initialize方法只会在应用程序启动期间被调用一次。


推荐阅读