用于多个连接字符串的MVC WebConfig变量

时间:2017-02-15 11:42:12

标签: c# asp.net-mvc

SHORT VERSION:是否可以以及如何在web.config文件中定义一个我可以在其中使用的变量。

我是一家公司的新手,也是C#MVC Web应用程序的初学者。我的任务是在一个 web.config 文件中维护和测试具有多个连接字符串的Web应用程序。但是,这些连接字符串具有相同的值,如:

<connectionStrings>
    <add name="DefaultConnection" connectionString="provider=System.Data.SqlClient;provider connection string=&quot;data source=SUPERCOMPUTER\SQLEXPRESS2012;initial catalog=HumanResourceDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="DefaultConnection3" connectionString="Data Source=SUPERCOMPUTER\SQLEXPRESS2012;Initial Catalog=HumanResourceDB;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

如您所见,与这两者的区别仅在于连接的名称。由于我是初学者,我不知道为什么这个应用程序必须使用2个不同名称的相同连接字符串。有人告诉我,Database First实体框架正在使用一个,而另一个正由ASP.NET Identity Code First使用,我现在还不知道 那些是什么。

问题:我不断更改连接字符串值以使用不同的计算机/环境/数据库等进行测试,并且修改2个连接字符串的需要确实让我失望。

问题:是否可以使用我可以在Web配置文件顶部声明的变量并在连接字符串中使用它,这样我就可以修改变量值。像这样:

var Server = SUPERCOMPUTER\SQLEXPRESS2012
var IntegratedSecurity = true
var database = HumanResourceDB
var user = databaseusername
var password = databasepassword

<connectionStrings>
    <add name="DefaultConnection" connectionString="... data source=**Server**;initial catalog=**database**;integrated security=**IntegratedSecurity **;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="DefaultConnection3" connectionString="Data Source=**Server**;Initial Catalog=**database**;Integrated Security=**IntegratedSecurity**" providerName="System.Data.SqlClient" />
  </connectionStrings>

其他问题: 如果mvc应用程序依赖于Database First Entity Framework和Code First .NET Identity,是否真的不可能使用一个连接字符串?

1 个答案:

答案 0 :(得分:0)

所有 EF项目都有一个dbContext文件。因此,您可以在一个解决方案中使用多个EF项目(Code First,DB first)。

是的,显然可能......在代码中,首先你的db上下文可以得到你想要的每个ConnectionString的名字!..像这样:

    public class AppContext : DbContext
{
    public AppContext() : base("ConString Name")
    {

    }
}

因此您可以将连接字符串名称更改为另一个...类似DefaultConnectionString1到DefaultConnectionString12或1000 ... 并且您可以使用多个数据库上下文来处理多个数据库...

Code中的

首先来自数据库......所以在项目的每个部分中你都可以创建你喜欢的dbcontext的实例。并对此进行CRUD操作..