用一些数据(用户、发票等)填充数据库

Filling database with some data (Users, Invoices, etc...)

我想用一些数据填充我的数据库,让前端开发人员开始使用我的 API。我不希望这些数据在生产中上线,所以我觉得它不属于 "Seeded data" 的类别。对我来说,种子数据是进入生产环境的数据,需要在我的应用程序启动之前存储在数据库中。例如,国家列表等

就我而言,我想添加一些用户、一些链接到用户的发票、一些产品等。如果在我们处于开发阶段时进行部署时这样做就更好了。

如有任何建议,我们将不胜感激。

启动时class您需要根据环境进行检查(是否处于开发阶段)并调用适当的种子方法。

检查的命令是。

if (Environment.IsDevelopment())

对于这个任务,我将创建一个单独的项目来完成它,我只会在其中播种数据。这完全取决于您的架构。

如果环境设置为 "Development",我将创建 DataInitializer class 来播种所有需要的数据。

例如创建用户:

    public static class IdentityDataInitializer
{
    private static void SeedUsers(UserManager<ApplicationUser> userManager)
    {
        if (userManager.FindByNameAsync("Admin").Result == null)
        {
            ApplicationUser admin = new ApplicationUser()
            {
                UserName = "Admin",
                Email = "Admin@admin.com",
                RegistrationDate = DateTime.Now
            };

            string password = "Admin1";

            var result = userManager.CreateAsync(admin, password);

            if (result.Result.Succeeded)
            {
                userManager.AddToRoleAsync(admin, "Admin").Wait();
            }
        }
    }
}

所有方法准备就绪后,只需将其添加到您的 Startup.cs:

        public void Configure(
        IApplicationBuilder app,
        IWebHostEnvironment env,
        UserManager<ApplicationUser> userManager,
        RoleManager<IdentityRole> roleManager)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            IdentityDataInitializer.SeedDefaultData(userManager, roleManager);
        }

        //Some methods...
    }
}