AttachDbFilename 如何工作?

How does AttachDbFilename work?

这可能是个愚蠢的问题。但我不得不问。我正在使用 EF 代码优先制作 ASP.NET MVC 5 应用程序。我不明白 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" 并将其附加到我的远程数据库实例吗?还是我应该做点别的?谢谢

要将您的 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