使用 Entity Framework Code First 開發資料庫應用程式時,當資料庫首次建立後,預設 Entity Framework 就會幫你在資料庫中建立一個名為 __MigrationHistory 的系統資料表,這個資料表預設在 Visual Studio 2012 的伺服器總管中是看不到的,但就算看的到,也無法進行管理,使用上頗為不便。因此本篇文章就是要來告訴各位如何幫你把這個表格從「系統資料表」轉換成「使用者資料表」,如此一來就能方便的在 Visual Studio 2012 中管理。
我們先來看看,從 Visual Studio 2012 裡,應該如何才能「看見」資料庫中的系統資料表:

切換過去後,就能看見系統資料表了:

不過,就算你「看的見」,不代表你可以用,如下圖示,許多管理功能都不見了,而且也無法刪除:

如果直接查詢該資料表的資料,也會出現錯誤訊息:

若要變更 __MigrationHistory 這個表格的物件類型,可以執行以下 T-SQL 做個變更動作:
SELECT *
INTO [__MigrationHistoryBAK]
FROM [__MigrationHistory]
DROP TABLE [__MigrationHistory]
EXEC sp_rename '__MigrationHistoryBAK', '__MigrationHistory'
執行之後 __MigrationHistory 資料表,就會變回「使用者資料表」物件類型,也就可以直接在 Visual Studio 2012 的伺服器總管來管理了,執行的步驟如下:
1. 新增查詢

2. 執行查詢


3. 重新整理資料表

4. 此時你會發現 __MigrationHistory 變成使用者資料表了,而且可以在 Visual Studio 2012 裡面使用完整的資料表管理功能,也可以顯示該資料表中的資料 (只是 Model 欄位由於是 VARBINARY 類型,所以就算能看也不能改。


相關連結