我試圖從代碼運行遷移。我創造了我的模特和啓用的遷移,然後添加初始遷移,這個初始遷移包含所有創建表等
實體框架代碼優先 - 初始代碼遷移不起作用
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
編輯我的回答:安全呢? –