2012-11-03 81 views
3

我在我的項目上實現了代碼優先遷移,並且希望不必在程序包管理器控制檯中始終使用添加遷移和更新數據庫。我希望數據庫的更新自動發生。用於EF遷移的Web.config配置

因此,我更新了我的web.config文件來執行此操作。我刪除了我的數據庫,但由於某種原因,當我啓動應用程序時,它不會創建數據庫。難道我做錯了什麼?

這裏是我的web.config

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <contexts> 
     <context type="AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess], [AuctionService.DataAccess.Migrations.Configuration, AuctionService.DataAccess]], EntityFramework"> 
     </databaseInitializer> 
     </context> 
    </contexts> 
    </entityFramework> 

編輯

我的代碼是一個WCF服務,當我調試這項服務,我得到這個

服務器遇到一個錯誤處理請求。 消息的例外情況是'無法更新數據庫以匹配當前型號 ,因爲有未決的更改並且自動遷移已禁用。 將掛起的模型更改寫入基於代碼的遷移或啓用自動遷移。設置爲 DbMigrationsConfiguration.AutomaticMigrationsEnabled爲true以啓用 自動遷移。'

回答

2

嘗試確保您已在AuctionService.DataAccess.Migrations.Configuration類的構造函數的AutomaticMigrationsEnabled屬性設置爲true

一旦這樣做,如果存在潛在的數據丟失,您也可能會收到異常;您可以通過將AutomaticMigrationDataLossAllowed屬性設置爲true來忽略此項。

例如:

internal sealed class Configuration : DbMigrationsConfiguration<AuctionContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     // AutomaticMigrationDataLossAllowed = true; // You may want this also, but be careful. 
    } 
} 

我不知道,如果你可以設置在config文件(無法找到該文檔)。

我相信,當您最初設置的遷移,你可以通過運行命令Enable-Migrations –EnableAutomaticMigrations

+1

你碰巧知道它是否可以設置AutomaticMigrationDataLossAllowed = true在獲取生成的配置類有一個屬性設置爲你web.config(通過轉換)。如果我把它放在我的代碼中,我會永遠偏執於它會在生產系統上運行! –

+0

@IainGalloway,你當然可以總是創建一個自定義的應用程序設置,它是在配置方法中讀取的。我選擇使用條件編譯來設置值:'#if DEBUG AutomaticMigrationDataLossAllowed = true; #else' –