2014-02-26 53 views
0

我想設置我的web.config的connectionString,因此它可以在運行時從「數據源= MyDevDatabase」更改爲「數據源= MyQADatabase」使用落下。該應用程序構建在ASP.NET MVC中,我使用的是實體框架數據庫優先方法,因此我的模型文件夾中有一個.edmx文件。在ASP.NET MVC EF數據庫中的運行時更改數據源第一個應用程序

Here是我找到的最接近的答案(向下滾動至數據庫/模型首先使用app.config/web.config文件中的連接字符串)。

但我不知道如何實現它。有人能給我一個例子嗎?

+0

我從來沒有使用過數據庫。是否有可能創建一個抽象的基礎上下文,然後創建2個不同的上下文,擴展基礎上下文,該上下文指向不同的數據庫?這樣,你可以使用不同的數據上下文來打單獨的數據庫。但正如你所說,你有一個.edmx文件,我不知道它是如何工作的。 –

+1

您可以將連接字符串傳遞給EF上下文的構造函數 – Andrei

回答

2

在你的web.config中有兩個不同的連接字符串,帶有兩個名字。 每次調用數據庫時都必須手動輸入連接字符串。

Webconfig 2周的ConnectionStrings:

<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?

+0

由於某種原因,這不適合我。我創建了「部分類MyEntities」並設置它如何說。然後我修改控制器頂部的數據庫爲'private MyEntities db = new MyEntities(connectionString);'。但沒有運氣。 – Derek

+0

我已經在衆多的項目中實現了這一點。請粘貼您的代碼,我可能會進一步幫助。也請詳細發佈您的錯誤。 – user3311522

+0

控制器的頂部:'私人DealerSitesMasterEntities db = new DealerSitesMasterEntities(connectionString);'connectionString是web.config中完整的connectionString值,但我更改了數據源。 – Derek

0

您可以使用web.config轉換(XML轉換)來完成此操作。基本上,您將擁有一個web.config版本文件,該文件將具有不同的連接字符串,並且在發佈模式下構建時,它將使用該轉換來製作最終的web.config。請參閱Microsoft教程 here

您可以通過右鍵單擊web.config文件並單擊「添加配置變換」來添加變換。

編輯:看起來像你的意思,一旦你已經部署。 See this answer

+0

是的,我想這樣做,用戶可以從下拉列表中更改它們連接的數據庫。並且我將添加更多的數據源,例如「data source = MyProdDatabase」。 – Derek

+0

感謝您的鏈接!好吧,我們假設我從開發數據庫開始,並希望在運行時更改爲QA數據庫。 它運行ChangeDatabase方法,當它完成時,source.Database.Connection.ConnectionString已從「Data Source = MyDevDatabase」更改爲「Data Source = MyQADatabase」。 但是,當我檢查視圖中的當前連接字符串時,它說數據源仍然是開發數據庫。我可以在編輯時確認這一點。 – Derek

+0

你可以發佈你使用的代碼嗎? – jle

相關問題