我首先使用实体框架代码,还有数据种子代码
现在,当我运行我的应用程序时,我的数据库会生成,但不会使用我的虚拟数据作为种子。我必须再次运行实体框架来填充所有数据。
知道为什么以及如何解决这个问题,这样我就不必运行我的应用程序 2x 来获取数据库和数据?
谢谢
我的上下文定义文件是:
public class Context : DbContext
{
public DbSet<Task> Tasks { get; set; }
public DbSet<Agency> Agency { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
这是我的种子文件
public class Configuration : DbMigrationsConfiguration<Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(Context context)
{
GenerateTasks(context);
context.SaveChanges();
}
private static void GenerateTasks(Context context)
{
if (context.Task.Any()) return;
context.Task.Add(new Task() { Name = "Received" });
}
}
创建数据库的钩子是:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
var context = new Context();
context.Database.Initialize(true);