7

我看到了许多使用 Code First 播种的示例,但我不确定我是否理解使用 EF Database First 时播种数据库的惯用方式。

4

1 回答 1

1

最佳实践非常依赖于情况。然后是 DEV 与 PROD 环境。在 DEV 期间使用 Drop 和重新创建模型更改时自动播种,因此您拥有测试数据是最有意义的。这是它用得最多的时候。

当然,您可以拥有手动触发的测试方法。我个人认为,当 DB 结构不稳定时,自动触发种子方法的想法对于 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
    }

}
于 2013-05-11T04:04:37.137 回答