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