我想知道如何为生产数据库运行'Update-Database'命令.
"更新 - 数据库"数据库在我的本地计算机上运行良好,但如何使其适用于生产数据?
因此,如果我对我的应用程序进行更改,然后通过visual studio运行"发布",这对于代码方面的工作正常,但是如何为生产数据运行"Update-Database"命令.
希望这个问题有道理......
谢谢,
所以我设法让Code First运行,它运行良好.
由于我仍在开发应用程序,因此数据库的结构尚未最终确定,因此我需要实现迁移.
我关注了官方博客帖子并获得了Update-Database命令.
但是,这只会更新数据库的SQLExpress版本.数据库的生产版本在Azure上,我在运行时指定连接字符串,因此Update-Database命令不起作用.
所以我的最后一个问题是:如何将自动迁移应用于在运行时指定连接字符串的生产数据库?
使用EF 4.3在应用程序启动时执行所有必需的数据库迁移的最佳方法是什么?
.net migration entity-framework ef-migrations entity-framework-4.3
我正在尝试自动生成我的数据库(如果它不存在)并运行该Seed()方法来填充数据.在我的数据库上下文构造函数中,我有:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDBContext, Configuration>());
Run Code Online (Sandbox Code Playgroud)
这很好用,我的数据库会根据需要自动创建所有表,但似乎Seed()没有调用该方法,我的数据库是空的.这是我的班级:
internal sealed class Configuration : DbMigrationsConfiguration<Context.MyDBContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Context.MyDBContext context)
{
context.Users.AddOrUpdate(
new Entities.User() { Email = "default@default.com", Password = "", Language = "en", CreatedDate = DateTime.Now }
);
base.Seed(context);
}
}
Run Code Online (Sandbox Code Playgroud)
当我Update-Database在Nuget控制台中运行时,数据在创建数据库后填充,但是不调用MigrateDatabaseToLatestVersion该Seed()方法.
可能发生什么?我尝试从这里手动运行迁移:
var configuration = new MyDbContextConfiguration();
configuration.TargetDatabase = new DbConnectionInfo(
database.ConnectionString, database.ProviderName);
var migrator = new DbMigrator(configuration);
migrator.Update();
Run Code Online (Sandbox Code Playgroud)
但也行不通. …