2

我可能在這裏做錯了事,如果是這樣的話,請指點我正確的方向。在運行時遷移不同的數據庫

我編碼,我希望能夠鍵入連接字符串我想在運行時使用,並能更新不同的數據庫(可能每一個不同的版本)遷移應用程序。

我的問題是添加遷移命令只能通過軟件包管理器控制檯執行,並且由於我的app.config下沒有設置連接字符串,因此如何才能將實體遷移知道我的數據庫在哪個版本?

我在針對某個連接字符串(它正確創建了數據庫和表)運行Initial遷移後陷入了這個問題,但之後,當我嘗試添加第二個遷移文件時,出現錯誤,說有其他遷移正在進行中。

也許實體轉移只是並不意味着出了包管理器控制檯來執行,或者動態連接字符串,但我要肯定的我在做什麼。

+0

是的,你可以這樣做http://stackoverflow.com/a/16133150/1347784 –

回答

2

已經有準備這樣的應用程序 - 瀏覽上migrate.exe信息:http://msdn.microsoft.com/en-us/data/jj618307.aspx

關於您的問題 - ef可以識別哪個遷移數據庫非常簡單。它用於數據庫中的__MigrationHistory表。在那裏它具有已經應用遷移的信息(通過MigrationId)。通過存儲在您的遷移的resx文件中的哈希值在關鍵「目標」下比較應用給定遷移後應該是當前數據庫和數據庫的狀態。

+0

關鍵是我通過包管理器控制檯添加遷移文件,並且在我的app.config下沒有設置連接字符串。 無法檢查表__MigrationHistory,因爲執行「添加遷移」命令時應用程序未運行。 我可能只是重新發明輪子。我要檢查提供的鏈接,然後更新答案。 – MMalke

+0

添加遷移和更新數據庫腳本始終針對某些數據庫執行。 – mr100

+0

應用程序不需要運行,以便腳本可以檢查__MigrationHistory表。 – mr100