2012-07-03 125 views
6

我正在使用實體框架5.0 RC與LocalDB數據庫預先配置VS 2012 RC進行一些原型和代碼優先數據庫測試。重置LocalDB中的EF代碼優先數據庫

經過幾個週期的改變我的代碼優先數據庫和運行「更新數據庫」我做了一個巨大的突破性變化和自動遷移失敗。我不在乎解決這個衝突,因爲這只是原型設計,所以丟失數據沒有問題。

如何重置或刪除數據庫? 重置還必須重置遷移表,這似乎在Visual Studio中的Server Explorer中隱藏。

+0

我發現了一些關於如何使__MigrationHistory表成爲非系統表的文章,這反過來又允許我從Server Explorer中刪除所有表和遷移歷史記錄。不過,這不是一個很快的重置方式,所以我在這裏接受創意。我遇到的另一點是不使用自動遷移,我有。啓用後,退出遷移錯誤是一種痛苦,因爲沒有代碼可以查看發生了什麼。 – angularsen

+2

您可以通過設置初始化程序'Database.SetInitializer(新AlwaysRecreateDatabase ());' – mfussenegger

+0

重新創建數據庫謝謝,是的,我意識到這一點,我想我已經成功地在控制檯應用程序中運行該代碼只是爲了清除所有。仍然在尋找一些對於團隊中的每個人來說都更容易做到的事情,以便在數據庫需要重置時執行,比如執行SQL腳本。 – angularsen

回答

8

跌落在Visual Studio整個數據庫

  1. 打開SQL Server對象資源管理器
  2. 查找您正在使用右鍵點擊使用的數據庫,然後選擇刪除
  3. 選擇兩個複選框(刪除備份和恢復歷史記錄和關閉現有連接),然後單擊確定。
  4. 再次運行程序,它應該重新創建該數據庫
+0

自從這個問題已經有一段時間了,但是,這是我目前使用的方法,以及重置數據庫。在附註中,我不確定何時發生這種變化,但在我最近的項目中,遷移歷史記錄表顯然不再是系統表。 – angularsen

1

到目前爲止,這是我找到的最好的方法。

  1. 使__MigrationHistory成爲非系統表。
  2. 執行SQL腳本刪除所有表。

要更改__MigrationHistory表,請參閱this article以處理現有數據庫和使用代碼優先創建的新數據庫。

的SQL腳本如下:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"; 

我使用Database .NET v4 Free運行該SQL腳本,因爲我的Visual Studio 11 RC副本不會讓我跑的查詢上的LocalDB出於某種原因。另外,由於某些外鍵,我需要運行腳本兩次以刪除所有表。我並沒有打算解決這個問題,因爲它似乎工作得很好。

0

我面臨着同樣的問題,但我發現了一個辦法看到的LocalDB istance的__MigrationHistory表,而不是使用服務器資源管理器你應該嘗試的SQL Server對象資源管理器,你會發現表在創建的數據庫的系統表下。

您可以使用表上的視圖數據命令直接輸出數據,但您可以毫無問題地查詢它。

select * from __MigrationHistory 

因此,您可以將其作爲您報告的針對現有遷移的文章進行放置。