2013-08-19 65 views
1

我在VS 2012中用EF5創建了MVC4解決方案,現在我試圖讓數據庫創建Code First。在創建控制器的方法我添加了db.Database.CreateIfNotExists(); 在我的機器上,我也有SQL Server 2012運行,並且我想在那裏創建數據庫而不是在某些SQL Express引擎或其他輕量級解決方案中。用於EF5的SQL Server 2012連接字符串代碼優先

我已經嘗試了幾種方法來製作正確的連接字符串,但都失敗了,現在我不知道它應該如何顯示。這是現在的樣子,但沒有被創建,以及所有我從CreateIfNotExists得到的是一個錯誤:

  • 的InnerException {「,而與SQL Server建立連接時出現與網絡相關的或特定於實例的錯誤。驗證實例名稱是否正確,並且SQL Server已配置爲允許遠程連接(提供程序:命名管道提供程序,錯誤:40 - 無法打開與SQL Server的連接)「} System.Exception的{} System.Data.SqlClient.SqlException

這是我的連接字符串的樣子:

<add name="Tool.Models.Context" connectionString="Server=MSSQLSERVER;Initial Catalog=Tool.models.ToolDb.mdf;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

編輯:

這個問題掙扎了將近一天後,我代localhostMSSQLSERVER(這仍然是實例的名稱,如果我看配置管理器)解決它。感謝您的意見。讓我想到。

+0

似乎您在名爲MSSQLSERVER的主機上沒有默認實例,或者別名MSSQLSERVER沒有很好定義。 – tschmit007

+0

您可以使用SSMS訪問此服務器嗎?爲什麼在連接字符串初始目錄中有.mdf?您只需指定數據庫名稱即可。 – Nilesh

回答

5

localhost是本地服務器,而不是實例,您似乎使用默認實例(稱爲mssqlserver),因此不需要指定實例名稱,只需指定服務器名稱,爲什麼用localhost替換MSSQLSERVER你的連接字符串工作。

您也可以在這裏使用服務器的實際名稱,例如SERVER-01(或者你的特定數據庫服務器的實際名稱是什麼),它會產生相同的效果。

但是,如果您在機器上安裝了命名實例,則必須指定服務器名稱和實例,例如, localhost \ instancename或server-01 \ instancename

希望這有助於解釋爲什麼放置本地主機的作品。

0

這是正確的......

默認情況下,大多數可能已經注意到,Visual Studio的2012 - ASP.NET MVC 4個模板 將定義一個默認的connectionString,它指向一個網站(的LocalDB)V11.0的.config。 在Visual Studio 2010 ASP.Net MVC 4項目模板的情況下,它指向SQLExpress ...

在我的情況下,我更喜歡將connectionString指向我用於開發的特定SQL Server 2012。

所以我們可以說我打開SQL Management Studio並在droplist,我要創建的數據庫+表見SQLServer2012-01名, 嗯,這名字,我通常會使用...

的connectionString =「Server = SQLServer2012-01; InitialCatalog = ...「

所有你需要做的事後很簡單 - 按照定義
-Enable的遷移
步驟 - [填充內容的種子的方法 - 如果需要的話...]
- 添加遷移MyFirstMigration [或者你想要的任何遷移名稱]
-Update-數據庫-Verbose

,你應該看到的結果在服務器資源管理器窗口中更新。

希望它可以幫助

相關問題