Asp.net core 用一些数据(用户、发票等)填充数据库

Asp.net core 用一些数据(用户、发票等)填充数据库,asp.net-core,entity-framework-core,seeding,Asp.net Core,Entity Framework Core,Seeding,我想用一些数据填充我的数据库,让前端开发人员开始使用我的API。我不希望这些数据进入生产现场,因此,我不认为它属于“种子数据”的范畴。对我来说,种子数据是进入生产环境的数据,需要在应用程序启动之前保存在数据库中。例如,国家名单等 在我的例子中,我想添加一些用户,一些与用户链接的发票,一些产品等。如果在开发阶段进行部署时这样做,那就太好了 如果您有任何建议,我们将不胜感激。在您的startup课程中,您需要根据环境进行检查(是否正在开发)并调用适当的种子方法 用于检查的命令是 if (Enviro

我想用一些数据填充我的数据库,让前端开发人员开始使用我的API。我不希望这些数据进入生产现场,因此,我不认为它属于“种子数据”的范畴。对我来说,种子数据是进入生产环境的数据,需要在应用程序启动之前保存在数据库中。例如,国家名单等

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


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

在您的startup课程中,您需要根据环境进行检查(是否正在开发)并调用适当的种子方法

用于检查的命令是

if (Environment.IsDevelopment())

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

若环境设置为“开发”,我将创建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 = "Admin@admin.com",
                RegistrationDate = DateTime.Now
            };

            string password = "Admin1";

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

            if (result.Result.Succeeded)
            {
                userManager.AddToRoleAsync(admin, "Admin").Wait();
            }
        }
    }
}
公共静态类IdentityDataInitializer
{
私有静态用户(UserManager UserManager)
{
if(userManager.FindByNameAsync(“Admin”).Result==null)
{
ApplicationUser admin=新的ApplicationUser()
{
UserName=“Admin”,
电子邮件=”Admin@admin.com",
RegistrationDate=DateTime.Now
};
字符串password=“Admin1”;
var result=userManager.CreateAsync(管理员,密码);
if(result.result.successed)
{
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...
    }
}
public-void-Configure(
IApplicationBuilder应用程序,
IWebHostenvironmentEnv,
用户管理器用户管理器,
角色经理(角色经理)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
IdentityDataInitializer.SeedDefaultData(userManager、roleManager);
}
//一些方法。。。
}
}

当你说,你将使用一个单独的项目,你是说一个基于asp.net核心的项目,使用EF插入任何需要的内容,对吗?这可能是最好的解决方案,因为这样我可以决定何时注入数据。@Notbad Correct。属于同一解决方案的简单项目。由于某种原因,我知道收到了评论通知:p