2015-08-25 50 views
1

我們遇到了一個問題,這個星期誰使用Management Studio中的實體框架數據庫手動刪除表我們的客戶之一。當他們去運行我們的軟件應用程序時,它會拋出一個異常,因爲表不存在。該框架不會重新創建該表,因爲它存在於MigrationHistory表中。如果我從遷移歷史中刪除相應的行,實體框架將重新創建表。重建表,如果是手動刪除

我們想什麼,能夠做的就是抓住這個特別的異常,並具有爲實體框架的方式來重新創建表,如果無需刪除對應行中的遷移歷史不存在。是否有一個特定的背景可以讓我們做到這一點?在這種特殊情況下,數據丟失並不重要,因爲表格是我們用於臨時追蹤的東西,因此如果它不存在,則重新創建它不會對現有數據造成風險。

非常感謝,

達明

回答

0

從我的經驗是沒有辦法,你可以用的EntityFramework遷移實現這一目標。 EF遷移通常是非常簡單的機制。它不會對數據庫結構執行任何檢查。其關於數據庫結構的知識僅基於__MigrationHistory表,遷移可以作爲一個整體應用或恢復,而不是部分。遷移系統表現良好,如果它是管理數據庫結構只有一個,如果有一些其他的東西(如用戶)將自己的strucutre則往往會導致需要手動解決衝突。如果你想有智能移民系統,那麼恐怕你必須自己寫。對於客戶機的正確解決方案是撤消誰不小心與系統(我假設是這種情況)互動雛用戶管理員權限。如果他們拒絕這樣做,你必須修復,因爲他們的行爲的系統,那麼這是給他們另一個發票的修爲的絕佳機會(這不就是漂亮嗎?)。

+0

我剛剛意識到了近1年後,我從來沒有回覆感謝您的答覆。我們的軟件系統最終沒有太多問題,因此每天都會進行數據庫備份,因此從其中的一個進行恢復很簡單。我們決定不發票修理到底:)。 –