2013-03-10 73 views
5

這是關於的ConnectionStrings/ASP.NET MVC與Visual Studio 2012的最終&的SQL Server Express 2012ASP.NET ConnectionString AttachDbFilename = | DataDirectory |

本教程這裏的後續行動:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4我碰到一個問題來了,在我的web.config這兩個連接字符串:

<connectionStrings> 
    <add name="DefaultConnection" 
     connectionString="Data Source=(LocalDb)\v11.0; 
          Initial Catalog=aspnet-MvcMovie-users; 
          Integrated Security=SSPI; 
          AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-users.mdf" 
     providerName="System.Data.SqlClient" /> 

    <add name="MovieDBContext" 
     connectionString="Data Source=(LocalDB)\v11.0; 
          AttachDbFilename=|DataDirectory|\Movies.mdf; 
          Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

的網站工作正常,但爲什麼在App_Data文件夾中創建第一個數據庫,而第二個是「C創建我不能fingure出來:\ Program Files文件\ Microsoft SQL Server的\ MSSQL11.SQLEXPRESS \ MSSQL \ DATA「?我認爲兩者都將在App_data中創建,因爲它們都使用此屬性:AttachDBFilename = | DataDirectory |!

注意:本教程提到它應該在App_Data &中添加了一個屏幕截圖,確實顯示了它!

我一直在尋找答案,並進入SQL的共謀(我認爲用戶實例可能是解決方案),但無法達到這樣的答案:

(這可能是瞭解用戶實例http://msdn.microsoft.com/en-us/library/bb264564(v=sql.90).aspx有用)

任何想法是極大的讚賞。提前致謝。

Regards

+0

將'InitialCatelog'添加到兩個字符串時會發生什麼? – 2013-03-10 09:00:11

+0

我沒有嘗試,因爲我的目標不是最終​​使兩個數據庫都出現在App_data下;我需要理解爲什麼VS/SQL以這種方式創建它們。感謝您的貢獻。 – Alaa 2013-03-10 09:58:55

回答

15

後研究/測試中,它竟然是如下:

VS會看在DataContext的類名,並期待看到,如果你提供了一個連接字符串名稱相同的類名稱;例如:

public class MovieDataContext : DbContext 

<connectionStrings><add name="MovieDataContext" ... 
如果設法找到一個匹配的連接字符串,它會根據你在相應的數據串中指定的標準創建DB

(到數據庫添加到App_Data將數據庫的路徑設置爲| DataDirectory |,如問題中提到的兩個連接字符串中所示); 如果名稱不匹配或者您沒有提供任何連接字符串,VS將回退到默認設置並將在默認位置/設置(通常爲C:\ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA)。

注意既沒有「集成安全性」設置也沒有「初始目錄」與此發揮任何作用(我能夠在App_Data中創建數據庫,集成安全性= True &集成安全性= SSPI以及有/無初始目錄)。

希望這會有所幫助。感謝參與的每個人。

0

AMT給出的是完全正確的。這很讓人困惑,因爲它使用連接字符串與.mdf和.sdf文件。

雖然我有另一個指針,但您可以通過重寫DBContext的構造函數並提供參數nameOrConnectionString來更改應用程序查找連接字符串的默認設置,該連接字符串的名稱與上下文類的類名相匹配然後

public BlogsContext() 
      : base("name=EFBlogs") 
     { 
     } 

應用搜索的連接字符串名爲EFBlogs,如果不能找到連接字符串,然後,它創建名稱EFBlogs數據庫,而不是BlogsContext

0

您好,我注意到添加數據庫時有所不同,它會詢問您是否希望將其放在app_data文件夾中,如果您單擊yes,則它會轉到app_data文件夾,並且mdf的完整路徑名也位於app_data中文件夾,當你使用文件瀏覽器。

相關問題