2010-11-20 99 views
6

我已經使用實體框架4.0創建了一個模型優先的方法的數據庫模型。然後,我使用從模型生成數據庫創建了一個sql腳本...我還在App_Data文件夾中創建了一個SQL Server數據庫文件。我現在如何針對這個MDF文件運行SQL文件?如何針對MDF文件運行SQL腳本?

我使用Visual Studio 2010中

+2

我可以得到一些反饋嗎? – gligoran 2010-11-21 18:34:58

+0

Upvote。這是有用的和明確的。我從下面的@jedatu的答案中得到了一個解決方案。 – Zeeshan 2013-07-15 09:55:30

回答

1

我找到了解決辦法,但它是一個有點哈克。

我有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數據庫非常耗時。所以我在發貨前就這樣做。

如果您發現更好的答案,請分享。

+0

這不會是一個有用的解決方案,因爲大多數開發人員習慣於在其項目文件夾中創建mdf文件,而不是在程序文件中。 – Zeeshan 2013-07-15 09:44:54

5

我遇到了同樣的問題,這是什麼對我有用。

當我選擇「從模型生成數據庫...」時,我創建了一個新的MDF文件。此過程正常工作,Visual Studio生成所需的SQL腳本。但是,我不知道如何連接到相同的MDF文件來運行腳本。

原來很簡單。

  1. 用鼠標右鍵單擊該腳本,選擇連接>連接

  2. 服務器名稱和身份驗證應該已經爲本地SQLEXPRESS實例設置。

  3. 點擊選項按鈕

  4. 的路徑點擊附加連接參數標籤

  5. 粘貼到你的數據庫文件中使用以下內容作爲指南:

    AttachDBFilename = C:\路徑\至\數據庫\ LocalData.mdf;數據庫= LocalData;

  6. 點擊連接按鈕

如果您仍然有連接也可能是因爲已經有一個打開的連接的麻煩。檢查服務器資源管理器,如果連接已打開,請右鍵單擊並選擇關閉連接。

只要SQL腳本保持連接狀態,該過程也會創建一個持久連接。您將希望關閉腳本或選擇右鍵單擊>連接>斷開連接。

更多信息可以在這個問題上找到: EF4 Generate Database

+0

'database = LocalData;'必須替換爲什麼? – Shimmy 2011-11-20 07:11:48

+0

我無法明確回答這個問題。我不認爲它真的很重要的數據庫名稱,但對我來說,我總是會使它與MDF文件名匹配,而不用擴展名。 – jedatu 2011-12-01 04:27:49

+0

謝謝,這也對我有用。 – Michael 2012-04-08 17:46:50

0

我遇到同樣的問題,使用EF5在mvc4模式第一種方法。我所做的是創建項目,添加一個新模型,在edmx圖上添加實體和關聯。右鍵單擊圖表並選擇'從模型生成數據庫'。這會生成sql文件。

現在添加一個MDF文件,比方說,Database1.mdf在Solution Explorer中的App_Data文件夾(添加>新項目>數據> SQL Server數據庫)。

右鍵單擊>在此mdf文件上打開。現在在屬性窗格中您有連接字符串。照原樣複製。

恢復到您生成的SQL腳本,右鍵單擊>執行。彈出窗口要求提供連接參數。確保在服務器名稱中使用正確的值(使用您的PC名稱或127.0.0.1)。

現在,在選項中,單擊附加連接參數標籤和粘貼MDF文件的屬性複製連接字符串。

這對我來說非常合適,而且非常合乎邏輯。沒有必要直接使用SQL Server安裝目錄。

0

偉大的答案以上,但我不得不這樣做在VS2013幾個步驟,但我沒有與幫助在這裏解決如下。

  1. 我從現有密度纖維板
  2. 右鍵單擊的創建ADO.NET型號 - >生成模型
  3. 數據庫
  4. 右鍵單擊Solution Explorer中密度纖維板和開放
  5. 在屬性窗格中複製連接字符串到剪貼板
  6. 在由ADO Model創建的SQLQuery窗口中單擊更改連接
  7. 在新的連接到服務器窗口 - >其他連接參數 - >從剪貼板粘貼連接字符串
  8. 在服務器資源管理器右鍵單擊數據庫 - >新建查詢
  9. 複製和生成的腳本粘貼從ADO查詢到新的查詢窗口
  10. 更改使用[yourdatabase.mdf]以使用[longPath]其中longPath是非常頂部的下拉列表中列出了長路徑。最簡單的方法是開始鍵入並按CTRL-SPACE。
  11. 運行查詢
  12. 保存longPath是因爲您可以將它粘貼到由ADO生成的任何新查詢的USE []中。

我希望這可以幫助別人 - 編碼快樂!

+1

自從我原來的問題和答案已經過去幾年了,但我後來發現LINQPad可以處理'.mdf'文件。看看這個:http://stackoverflow.com/questions/4824005/can-linqpad-connect-to-an-mdf-file – gligoran 2016-01-23 08:58:26