我试图从代码运行迁移。我创造了我的模特和启用的迁移,然后添加初始迁移,这个初始迁移包含所有创建表等
实体框架代码优先 - 初始代码迁移不起作用
public partial class Initial : DbMigration
{
public override void Up()
{
CreateTable(..........
}
public override void Down()
{
DropTable(...........
}
}
然后我试图从Visual Studio工作正常更新,数据库命令,创建数据库并运行初始迁移。
然后我从Sql Studio中删除数据库。然后我运行调用迁移管理器类
// MigrationManager class
public static bool PerformMigration(string migrationId)
{
bool success = false;
try
{
DbMigrationsConfiguration<MyDbContext> config = new Configuration();
....
DbMigrator migrator = new DbMigrator(config);
migrator.Configuration.AutomaticMigrationsEnabled = false;
if (string.IsNullOrEmpty(migrationId))
migrator.Update(); --> fails saying pending migration
else
migrator.Update(migrationId);
success = true;
}
catch (Exception e)
{
success = false;
LastException = e.Message;
}
return success;
}
的更新()失败,出现以下错误控制台应用程序:
无法更新数据库,因为有挂起的更改,并自动迁移到当前的匹配模型被禁用。 将暂挂模型更改写入基于代码的迁移或启用自动迁移。 将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。
//Configuration.cs
internal sealed class Configuration : DbMigrationsConfiguration<MyDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(WorkflowConfigurationDbContext context)
{
SeedData(context);
}
private void SeedData(){...}
}
public class MyDbContext : DbContext
{
public MyDbContext()
{
}
public DbSet....
}
当我通过Update()调用步骤,它进入配置()构造函数和MyDbContext()构造函数,但之后失败了,好像它没有试图在所有的初始迁移。
感谢您的回复,我已经尝试过,没有成功:( – wk4questions
编辑我的回答:安全呢? –