2016-11-04 129 views
0

所以我一直在想如何通過自動化連接字符串名稱來連接我的數據庫,從而使我的生活更輕鬆。我在我的筆記本電腦和個人電腦上編程。他們利用不同的數據庫所以我創建了下面的代碼,它的工作。但是,我不記得以前聽說過這種方法,所以想知道爲什麼?這是做這種事情的壞方法嗎?可以理解的是,我必須在釋放它之前刪除代碼,但它肯定會讓它更容易在計算機之間切換,因爲我不必在Web.config中註釋/取消註釋行。每個連接字符串名稱都設置爲Web.config中的計算機名稱。連接字符串名稱

static string connectionStringName = System.Environment.MachineName; 

    public ApplicationDbContext() 
     : base(connectionStringName, throwIfV1Schema: false) 
    { 
    } 

回答

3

一種不同的方法來考慮將利用web.config transforms並創建新的環境(開發-PC /開發,筆記本電腦),它包含有你需要不同的連接字符串。

然後,當您啓動Visual Studio時,只需選擇所需的構建配置文件,並在啓動應用程序時使用適當的連接字符串。如果您需要使用兩種環境之間不同的文件路徑或其他配置,這將會很有幫助。

+0

謝謝,Dillie-O。說實話,我對於網絡轉換並沒有一個清晰的認識,這就是爲什麼我在尋找更簡單的東西。 – physics90

+0

我真的建議不要自己使用web.config變換 - 他們強迫你在每次部署到新的目標環境時重新構建你的包,當你將自動發佈過程引入混合時,開始變得非常麻煩。 – s3raph86

+1

@ physics90 - 如果它有助於在所有的web.config的混亂變換,這裏是一個老博客文章中,我如何得到它運行起來,這是一個容易得多比它聽起來寫道 - HTTPS://dillieodigital.wordpress .COM/2010/9月27日/馴服,你-configurationdeployments與 - 網絡配置 - 變換/ s3raph86使得有關部署的顧慮好點,但我在我自己的CI環境中被發現捻/天青/ VS可以輕鬆地在編譯部署時定位正確的配置。您可能需要重新審視,但如果您主要關注自己的開發工作,則轉換應該沒問題。 –

1

您的答案是使用web.config變換和您的SetParameters.xml文件的組合。我知道他們起初看起來很艱鉅,但如果你把時間投入到學習中,它就會得到回報。

使用web.config轉換或根據計算機名稱命名連接字符串是壞主意TM。這些解決方案工作,但他們需要您每次釋放到新環境時重新構建WebDeploy程序包。您需要一個解決方案,讓您可以將任何軟件包部署到任何環境。

首先,您需要創建兩個web.config變換。一個用於調試,一個用於發佈。 Web.Debug.config將如下所示:

<connectionStrings> 
    <add name="MyDB" connectionString="Data Source=.\SQLExpress;Initial Catalog=MyDevDatabase;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

而您的Web.Release.config將包含一個佔位符字符串。當您將程序包部署到目標環境中的IIS時,這些佔位符將被更新。它應該是這樣的:

<connectionStrings> 
    <add name="MyDB" connectionString="__targetenvironmentconnstring__" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

爲了讓您的目標環境連接字符串中的地方,當你做你的部署,你需要在屬性在Web項目更新您發佈配置。您將爲每個目標環境創建一個發佈配置文件(使用選項);所以QA.pubxml,UAT.pubxml,Production.pubxml等Visual Studio將引導您通過嚮導來創建這些文件,當您使用發佈對話框。現在打開每個文件。你要編輯的文件的末尾納入MSDeployParameterValue元素,如我在這裏所做的

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> <!-- A bunch of info --> </PropertyGroup> 
    <ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDB-Web.config Connection String"> 
    <ParameterValue><!-- Your target environment connection string goes here! --></ParameterValue> 
    </MSDeployParameterValue> 
</Project> 

現在,右鍵單擊併發布你的Web項目,選擇發佈配置你想要的。在您指定的輸出目錄中,您將看到一個包含您的目標連接字符串的SetParameters.xml文件。這將會進入你的網絡。配置文件在部署,但重要的是,你也可以隻手動導入包使用IIS,並在部署時這樣分配自己的價值觀:

enter image description here

最後你可以參考你的連接字符串使用ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString無論您處於什麼環境,您都擁有正確的價值!

要了解更多,我強烈建議您閱讀以下

這需要幾個去繞到你的頭,但你永遠不會回去。

相關問題