我看到许多使用Code First播种的例子,但我不确定我在使用EF Database First时了解播种数据库的惯用方法。
答案 0 :(得分:0)
最佳做法非常依赖于情况。然后是DEV与PROD环境。 使用Drop时自动播种并在DEV期间重新创建模型更改,这样您就可以获得最合适的测试数据。这是它最常用的时候。
原因是您可以使用手动触发的测试方法。我个人觉得这个想法是一个自动触发的种子方法,当数据库结构不稳定时,这种方法并不令人兴奋,更多的是用于DEV原型设计。使用迁移时,您倾向于保留您辛苦赚来的测试数据。有些人在PROD初始安装期间使用Seeding。其他人将在安装/调试过程中触发特定的加载例程。我喜欢使用自定义加载例程。
编辑:代码第一个样本。使用DB First,您只需正常写入Db。
// select the appropriate initializer for your situation eg
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, MyMigrationConfiguration>());
Context.Database.Initialize(true); // yes now please
//...
public class MyMigrationConfiguration<TContext> : DbMigrationsConfiguration<TContext>
where TContext : DbContext{
public MyMigrationConfiguration() {
AutomaticMigrationsEnabled = true; //fyi options
AutomaticMigrationDataLossAllowed = true; //fyi options
}
public override void Seed(TContext context)
{
base.Seed(context);
// SEED AWAY..... you have the context
}
}