我正在努力找出在我的生产环境中迁移我的数据库的最佳方法,我想我把一些术语弄糊涂了。
我有一个名为“迁移”的类,我用它作为我的数据库的种子。它的构造函数如下(我的DbContext称为SiteDatabase):
internal sealed class Migration : DbMigrationsConfiguration<SiteDatabase>
{
public Migration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}在我的'Application_Start()‘方法中,我看到添加了以下条目:
protected void Application_Start()
{
new DbMigrator(new Migration()).Update();
// Option 1
Database.SetInitializer(new MigrateDatabaseToLatestVersion<SiteDatabase, Migration>());
// Option 2
Database.SetInitializer(new DropCreateDatabaseAlways<SiteDatabase>());
}在Package控制台中,我知道以下命令:
> update-database
> add-migration发布于 2015-04-09 17:33:10
AutomaticMigrationsEnabled在这里做什么?我就是这样启用自动迁移的吗?
显然:是的。这样做的效果是,您不必在调用add-migration之前执行update-database:它将为您生成一个迁移,只需一个名称的时间戳。您将无法在Migrations文件夹中找到此迁移。
这些是唯一的选择吗?
不,还有更多,比如CreateDatabaseIfNotExists,DropCreateDatabaseWhenModelChanges,DropCreateDatabaseAlways,还有你自己创造的定制的。
这与迁移类中的AutomaticMigrationsEnabled有什么关系?
自动迁移确保不再需要自己执行,从而简化了表的迁移过程。数据库初始化程序决定如何处理数据库本身。它们是不同的方面,但它们在数据库上的工作方式是相互关联的。
更新数据库与AutomaticMigrationsEnabled的关系如何?还需要吗?那么当您创建一个新的DbMigrator时呢?
参见上面:您基本上不需要再调用add-migration了。
如果我使用附加迁移创建迁移,那么有什么好的方法来命名它们呢?
我不知道任何指南,但我只是总结了变化的内容。例如,“添加用户模型地址”将地址字段添加到我的用户。这真的取决于你来决定什么是最有效的。
是否有一种方法来控制通过添加迁移生成的文件是如何命名的?
我不知道有这样的选择。
https://stackoverflow.com/questions/29544891
复制相似问题