2013-07-27 65 views
3

我最近編寫了一個帶代碼第一後端(SQL CE 4.0數據庫)的WPF應用程序。該應用程序現在處於瘋狂狀態,正在被非技術人員使用。實體框架代碼第一次遷移生產(WPF應用程序)

我做了一些更改,我需要添加一個遷移以反映我已成功完成的更改。只需使用Update-Database命令,我就可以在本地機器上正常工作。

當我部署更新時,這將如何工作?我似乎無法確定我的客戶數據庫將如何遷移。每當我運行在不是我的開發機器的機器上時,我只是得到以下錯誤;

無法更新數據庫以匹配當前模型,因爲存在掛起的更改並且自動遷移已禁用。將掛起的模型更改寫入基於代碼的遷移或啓用自動遷移。將DbMigrationsConfiguration.AutomaticMigrationsEnabled設置爲true以啓用自動遷移。

P.s.我絕對不希望啓用自動遷移;)

更新----

這裏是我的初始化器;

Database.SetInitializer(new Initializer()); 

這是我的實際初始化者;

public class Initializer : MigrateDatabaseToLatestVersion<Context, Configuration> 
{ 
} 

這裏是我的配置類的構造函數;

public Configuration() 
{ 
    AutomaticMigrationsEnabled = false; 

    DbMigrator migrator = new DbMigrator(this); 

    if (migrator.GetPendingMigrations().Any()) 
    { 
     _pendingMigrations = true; 
     migrator.Update(); 
    } 
} 

回答

4

你缺乏初始化:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfiguration>()); 

這將迫使你的客戶數據庫進行升級時,你的應用程序啓動。

,讓你更好地控制遷移過程中的另一個選項是手動強制:

YourMigrationsConfiguration cfg = new YourMigrationsConfiguration(); 
    cfg.TargetDatabase = 
     new DbConnectionInfo( 
      theConnectionString, 
      "provider"); 

    DbMigrator dbMigrator = new DbMigrator(cfg); 
    dbMigrator.Update();    
+0

非常感謝評論。已經嘗試過了。我上面更新了我的代碼。 –

相關問題