我已經使用實體框架4.0創建了一個模型優先的方法的數據庫模型。然後,我使用從模型生成數據庫創建了一個sql腳本...我還在App_Data文件夾中創建了一個SQL Server數據庫文件。我現在如何針對這個MDF文件運行SQL文件?如何針對MDF文件運行SQL腳本?
我使用Visual Studio 2010中
我已經使用實體框架4.0創建了一個模型優先的方法的數據庫模型。然後,我使用從模型生成數據庫創建了一個sql腳本...我還在App_Data文件夾中創建了一個SQL Server數據庫文件。我現在如何針對這個MDF文件運行SQL文件?如何針對MDF文件運行SQL腳本?
我使用Visual Studio 2010中
我找到了解決辦法,但它是一個有點哈克。
我有SQL Server Express(2008 R2)。所以當從模型生成數據庫時,我連接到它並讓它在那裏建立一個數據庫。然後我去C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
。 10_50部分是因爲版本,可能會因您而異。所以在這個文件夾中有一個.mdf文件,就像數據庫 - .mdf一樣。還有一個_log.ldf文件。我將它們複製到我的項目的App_Data文件夾中。
這樣做很有效,但對於模型中的每個更改都生成一個新的.mdf數據庫非常耗時。所以我在發貨前就這樣做。
如果您發現更好的答案,請分享。
這不會是一個有用的解決方案,因爲大多數開發人員習慣於在其項目文件夾中創建mdf文件,而不是在程序文件中。 – Zeeshan 2013-07-15 09:44:54
我遇到了同樣的問題,這是什麼對我有用。
當我選擇「從模型生成數據庫...」時,我創建了一個新的MDF文件。此過程正常工作,Visual Studio生成所需的SQL腳本。但是,我不知道如何連接到相同的MDF文件來運行腳本。
原來很簡單。
用鼠標右鍵單擊該腳本,選擇連接>連接
服務器名稱和身份驗證應該已經爲本地SQLEXPRESS實例設置。
點擊選項按鈕
的路徑點擊附加連接參數標籤
粘貼到你的數據庫文件中使用以下內容作爲指南:
AttachDBFilename = C:\路徑\至\數據庫\ LocalData.mdf;數據庫= LocalData;
點擊連接按鈕
如果您仍然有連接也可能是因爲已經有一個打開的連接的麻煩。檢查服務器資源管理器,如果連接已打開,請右鍵單擊並選擇關閉連接。
只要SQL腳本保持連接狀態,該過程也會創建一個持久連接。您將希望關閉腳本或選擇右鍵單擊>連接>斷開連接。
更多信息可以在這個問題上找到: EF4 Generate Database
我遇到同樣的問題,使用EF5在mvc4模式第一種方法。我所做的是創建項目,添加一個新模型,在edmx圖上添加實體和關聯。右鍵單擊圖表並選擇'從模型生成數據庫'。這會生成sql文件。
現在添加一個MDF文件,比方說,Database1.mdf在Solution Explorer中的App_Data文件夾(添加>新項目>數據> SQL Server數據庫)。
右鍵單擊>在此mdf文件上打開。現在在屬性窗格中您有連接字符串。照原樣複製。
恢復到您生成的SQL腳本,右鍵單擊>執行。彈出窗口要求提供連接參數。確保在服務器名稱中使用正確的值(使用您的PC名稱或127.0.0.1)。
現在,在選項中,單擊附加連接參數標籤和粘貼MDF文件的屬性複製連接字符串。
這對我來說非常合適,而且非常合乎邏輯。沒有必要直接使用SQL Server安裝目錄。
偉大的答案以上,但我不得不這樣做在VS2013幾個步驟,但我沒有與幫助在這裏解決如下。
我希望這可以幫助別人 - 編碼快樂!
自從我原來的問題和答案已經過去幾年了,但我後來發現LINQPad可以處理'.mdf'文件。看看這個:http://stackoverflow.com/questions/4824005/can-linqpad-connect-to-an-mdf-file – gligoran 2016-01-23 08:58:26
我可以得到一些反饋嗎? – gligoran 2010-11-21 18:34:58
Upvote。這是有用的和明確的。我從下面的@jedatu的答案中得到了一個解決方案。 – Zeeshan 2013-07-15 09:55:30