如何使用Entity Framework Database First方法对数据进行种子化?

bru*_*eaf 6 entity-framework entity-framework-5

我看到许多使用Code First播种的例子,但我不确定我在使用EF Database First时了解播种数据库的惯用方法.

phi*_*ady 1

最佳实践很大程度上取决于具体情况。然后是 DEV 与 PROD 环境。在开发期间使用“删除”并在模型更改时重新创建时自动播种,这样您就可以拥有最有意义的测试数据。这是用得最多的时候。

当然,您可以拥有手动触发的测试方法。我个人认为自动触发种子方法的想法并不那么令人兴奋,而且当数据库结构不稳定时更适合 DEV 原型设计。使用迁移时,您倾向于保留来之不易的测试数据。有些在 PROD 中的初始安装期间使用播种。其他人将在安装/调试过程中触发特定的加载例程。我喜欢使用自定义加载例程。

编辑:代码第一个示例。使用 DB First,您只需正常写入数据库即可。

// 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
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 首先这看起来不像数据库。DB First 首先不支持迁移。 (4认同)