所以我有一个实体框架核心优先数据库和一个.Net核心应用程序。
我想在创建数据库时向其添加种子数据。我知道FluentAPI具有HasData方法,但这不是我想要的。
创建数据库后,我想使用随机生成的密码(每次都不同)创建一个用户,该密码将保存在服务器中的文件中。
我不能使用HasData方法,因为它每次都会创建相同的密码。
所以我的问题是:除了HasData方法之外,还有其他方法可以将Seed数据添加到Entity Framework Core Code First数据库
答案 0 :(得分:2)
是的!有一种方法!您可以执行以下操作:
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
方法在应用程序启动期间仅被调用一次。
答案 1 :(得分:0)
创建一个DataSeeder类,并在其中注入DbContext。 编写seedData方法以插入所需的数据。这将是自定义逻辑。
您可以在创建数据库后运行此代码。
public class DataSeeder
{
public static void SeedRandomPassword(YourDbContext context)
{
//// your custom logic to generate random password
//// set it to right user
context.Users.Add(); // Or Update depending on what you need
context.SaveChanges();
}
}
}