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

问题描述 投票:0回答:2

我想用一些数据填充我的数据库,以使前端开发人员可以开始使用我的API。我不希望这些数据投入生产,因此,我不认为它属于“种子数据”类别。对我而言,种子数据是进入生产环境且需要在我的应用程序启动之前进入数据库的数据。例如,国家列表等。

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

任何建议将不胜感激。

asp.net-core entity-framework-core seeding
2个回答
0
投票

如果环境设置为“开发”,我将创建DataInitializer类以播种所有需要的数据。

例如创建用户:

    public static class IdentityDataInitializer
{
    private static void SeedUsers(UserManager<ApplicationUser> userManager)
    {
        if (userManager.FindByNameAsync("Admin").Result == null)
        {
            ApplicationUser admin = new ApplicationUser()
            {
                UserName = "Admin",
                Email = "[email protected]",
                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...
    }
}

1
投票

在您的启动类上,您将要根据环境(是否在开发中)进行检查,并调用适当的种子方法。

要检查的命令。

if (Environment.IsDevelopment())

对于此任务,我将创建一个单独的项目来做,而我只会在其中播种数据。这完全取决于您的体系结构。

© www.soinside.com 2019 - 2024. All rights reserved.