2017-02-15 18 views
1

簡短版本:是否有可能以及如何在web.config文件中定義一個變量,我可以在其中使用它。多連接字符串的MVC WebConfig變量

我是新來的公司,也是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身份代碼優先使用,我不知道現在這些是什麼。

問題:我正在不斷改變連接字符串值來測試不同的機器/環境/數據庫等,需要修改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應用程序依賴於這兩個數據庫第一實體框架和代碼首先.NET身份?

+0

有很多事情你可以做。最簡單的事情(因爲它非常可以googleable)可能是使用配置轉換。 – Crowcoder

+0

你的研究表明了什麼?您可以使用配置轉換,或者在代碼中使用不同的連接字符串名稱(「Default_Env_1」,「Default_Env_2」),其中每個不同的名稱指向不同的數據庫。 – CodeCaster

回答

0

全部EF項目有一個dbContext文件..所以你可以在一個解決方案中使用多個EF項目(Code First,DB first)。

是它完全可能的......在代碼首先你的數據庫環境可以得到你想要的每個ConnectionString的名字..這樣的:

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

    } 
} 

這樣你就可以在連接字符串名稱更改爲另一個..如DefaultConnectionString1到DefaultConnectionString12或1000 ... ,你可以有多個數據庫上下文來處理多個數據庫...

在代碼第一次從數據庫是這樣的...所以在項目的每個部分你可以創建你喜歡的dbcontext。並做的CRUD操作..