2015-02-05 50 views
0

这可能是一个愚蠢的问题。但我不得不问。我正在用EF代码优先制作ASP.NET MVC 5应用程序。我无法理解AttachDbFilename是如何工作的。这是否创建并将数据库附加到数据库实例?或者它只是附加一个现有的数据库?如果数据库已附加,我真的需要使用它吗?例如,以下是我的默认连接字符串:AttachDbFilename如何工作?

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication3-20150205041122.mdf;Initial Catalog=aspnet-WebApplication3-20150205041122;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 

而且我有一个名为“ShoesContext”的上下文。当我检查localdb时,我看到“aspnet-WebApplication3-20150205041122”和“ShoesContext”。

我想为远程服务器实现相同。我应该如何更改连接字符串?我应该复制并附加“aspnet-WebApplication3-20150205041122”到我的远程数据库实例吗?还是我应该做点别的?谢谢。

回答

1

要改变你的connectionString到远程服务器,你将不得不做

<connectionStrings> 
<add name="myConnectionString" connectionString="server=myServer;database=myDb;uid=myUser;password=myPass;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

<connectionStrings> 
<add name="mySecondConnectionString" connectionString="server=myServer;database=myDb;uid=myUser;password=myPass;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

你的C#代码将看起来像

var firstConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString; 
var secondConnectionString = ConfigurationManager.ConnectionStrings["mySecondConnectionString"].ConnectionString; 

更多信息here

+0

谢谢,但与当前连接字符串,我得到两个数据库。与你的,我想我得到一个数据库。我怎样才能得到第二个数据库(如aspnet-WebApplication3-20150205041122)? – jason 2015-02-05 15:10:33

+1

只是有另一个不同名称的连接字符串 – Izzy 2015-02-05 15:12:33

+1

@jason查看我更新的答案 – Izzy 2015-02-05 15:19:16