Ada*_*dam 5 c# deployment entity-framework ef-migrations
我现在有一个应用程序设置使用EF6 Code-First Migrations.我使用Add-Migration的标准工作流程,然后在Console中使用Update-Database.我在本地以及在我们的开发环境中使用MigrateDatabaseToLatestVersion初始化程序.这将自动为我和其他开发人员处理所有迁移.
我对允许在生产中进行自动迁移感到不舒服,所以我运行了Update-Database -script来生成一个我可以在运行之前查看的SQL脚本.这非常有效,我对这个部署过程很满意.但是,我意识到SEED方法永远不会运行,因为Update-Database没有直接在数据库上运行.
我正在寻找一种让迁移配置上的SEED方法在不运行实际迁移的情况下运行的好方法.我发现migrate.exe(http://msdn.microsoft.com/en-us/data/jj618307.aspx)似乎可以正常工作,但我想知道是否有人知道更好的方法.
此外,也许更重要的是,我担心生产中的自动迁移是荒谬的,考虑到我已经使用EF6已经固有的自动化程度了吗?
谢谢!
仅供参考 - 对于那些感兴趣的人 - 我最终创建了自己的数据库初始值设定项,它调用共享种子逻辑。我将所有种子代码移至静态“种子”类的执行方法中。然后,我创建了一个简单的 DatabaseInitializer,并在生产 web.config 中使用它。我仍然使用 MigrateToLatestVersion 作为开发和本地的初始化程序,它的工作方式就像一个魅力。
public class SeedOnlyInitializer : IDatabaseInitializer<YourContextType> {
public void InitializeDatabase(YourContextType context)
{
Seed.Execute(context);
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
感谢巴克西米利安为我指明了正确的方向。答案并没有完全达到我想要的效果,但它帮助我想出了这个。
| 归档时间: |
|
| 查看次数: |
3938 次 |
| 最近记录: |