在ASP.NET MVC EF Database First应用程序中在运行时更改数据源

时间:2014-02-26 17:29:28

标签: c# asp.net-mvc entity-framework connection-string

我正在尝试设置我的web.config的connectionString,以便可以在运行时使用下拉列表将其从“data source = MyDevDatabase”更改为“data source = MyQADatabase”。该应用程序是在ASP.NET MVC中构建的,我使用的是Entity Framework Database First方法,因此我在Models文件夹中有一个.edmx文件。

Here是我找到的最接近的答案(在app.config / web.config文件中向下滚动到数据库/模型优先连接字符串)。

但我不确定如何实施它。有人可以举个例子吗?

2 个答案:

答案 0 :(得分:2)

在web.config中有2个不同的连接字符串,带有2个名称。 每次调用数据库时都必须手动提供连接字符串。

带有2个连接字符串的Webconfig:

<configuration>
  <connectionStrings>
    <add name="ConnectionString1"
         connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|YourDatabaseFilename1.mdf;User Instance=True"
         providerName="System.Data.SqlClient" />
    <add name="ConnectionString2"
         connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|YourDatabaseFilename2.mdf;User Instance=True"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

以下是您如何提供连接字符串:

public MyEntities (string connectionString)
    : base(connectionString)
{
}

见:

How to have different connection string for different users in Entity Framework

Setup Entity Framework For Dynamic Connection String

EntityFramework - Where is the connection string?

答案 1 :(得分:0)

您可以使用web.config转换(XML转换)来实现。基本上,您将拥有一个具有不同连接字符串的web.config发布文件,当您在发布模式下构建时,它将使用该转换来创建最终的web.config。请参阅Microsoft教程 here

您可以通过右键单击web.config文件并单击“添加配置转换”来添加转换。

编辑:看起来就像你的意思一样。 See this answer