我有幾個數據庫,他們的架構是相同的。當我使用database-first時,創建edmx文件時會指定連接字符串。我想知道,有沒有辦法改變連接字符串?這是,所以我可以選擇運行哪個數據庫。 Thx提前!有沒有辦法改變數據庫中的連接字符串?
回答
更改web.config文件中的連接字符串。
<connectionStrings>
<add name="SandBoxEntities" connectionString="metadata=r... />
</connectionStrings>
我略實際的連接字符串,因爲它並不重要 - 只是想給你的web.config文件中尋找什麼的想法。
您還可以編程方式更改連接字符串。檢查出Example 16.2. Programmatically modifying an EntityConnectionString。
我們不會在我們的web.configs中存儲連接字符串,因此接受的解決方案不適用於我們。如果你只是試圖通過提供基本的DbContext構造連接字符串,你會得到以下異常:
使用數據庫優先和模型優先發展的T4模板可能無法正常工作,如果在代碼中使用代碼生成第一模式。要繼續使用Database First或Model First,請確保在執行應用程序的配置文件中指定了實體框架連接字符串。要使用這些類,這些類是從Database First或Model First生成的,使用Code First添加任何使用屬性或DbModelBuilder API的其他配置,然後刪除引發此異常的代碼。
要解決這個問題,創建一個分部類的情況下,如下所示和形式進行額外的EF元數據的連接字符串(其中MyContext是你背景型號名稱(如型號名稱是MyModel.edmx,比在代碼中MyContext
以下替換MyModel
與所有三個擴展.csdl,.ssdl,使用.msl)):
public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provider connection string='{0}'", connStr))
{
}
}
爲了使這項工作對我而言,我需要將"更改爲單引號,如此答案中所述:http://stackoverflow.com/a/7004173/994464 – Brenton
直截了當且簡單。 –
您可以在web.config中定義多個連接字符串,然後在你的代碼或者使用它們你的工作。 例如:`
<connectionStrings>
<add name="conStr1" connectionString="metadata=r... />
</connectionStrings>`
<connectionStrings>
<add name="conStr2" connectionString="metadata=r... />
</connectionStrings>`
等
和你的上下文類的構造函數獲取連接字符串名稱作爲參數:
public MyContext(string connStr)
: base(connStr) { }
確定。現在你可以在你的代碼中使用如下:
using (var db = new MyContext("name=conStr1"))
{
//your code here
}
然後
using (var db = new MyContext("name=conStr2"))
{
//your code here
}
- 1. 有沒有辦法在Python中返回字符串連接?
- 2. 有沒有辦法在html屬性中連接字符串?
- 3. 有沒有辦法鏈接/連接兩個MS SQL數據庫?
- 4. 有沒有辦法將連接字符串硬編碼爲RDLC?
- 5. 連接字符串沒有被修改
- 6. 更改數據庫中的連接字符串數據庫
- 7. 沒有數據庫連接的字符串轉義
- 8. 有沒有辦法在連接之前ping MSSQL數據庫
- 9. 有沒有辦法將MySql數據庫連接到eclipse?
- 10. 有沒有辦法在竹子中有多個分支連接字符串?
- 11. 有沒有辦法改變JOptionPane.showMessageDialog字體?
- 12. 有沒有辦法從沒有JRuby的Ruby連接到H2數據庫?
- 13. 有沒有辦法改變UILabel中字符串的一部分的顏色?
- 14. 有沒有辦法改變Node.js net(套接字)庫中的「on」偵聽器?
- 15. 有沒有辦法在C#中訪問字符串數組中的字符串?
- 16. 有沒有辦法讓MQ把多行字符串數據?
- 17. 有沒有辦法在數據庫或連接字符串級別上設置lock_timeout?
- 18. 有沒有辦法在SQLAlchemy連接字符串中指定Postgres模式?
- 19. 有沒有辦法在VBA中連接?
- 20. 有沒有辦法在不分配變量的情況下將字符串連接到數字?
- 21. 沒有數據庫連接
- 22. 有沒有辦法從cmd字符串複製字符串?
- 23. 有沒有辦法從字符串中刪除字符? Java
- 24. Microsoft Excel數據連接 - 通過VBA改變連接字符串
- 25. 有沒有辦法從變量中選擇數據庫?
- 26. 有沒有辦法unfork heroku數據庫
- 27. 有沒有辦法發送具有整數和字符串的表單數據?
- 28. 有沒有辦法在.vimrc中的變量上使用子字符串函數?
- 29. 有沒有辦法將函數變量轉換爲D中的字符串?
- 30. 在類庫項目中更改數據庫連接字符串
我知道如何設置連接字符串在web.config中,我想知道的是如何在運行時改變它,這是,所以我可以選擇使用哪個數據庫。當我創建edmx文件時,連接字符串已經設置,有沒有辦法在運行時改變它? – James
好的 - 我編輯了我的答案,並給了你一個鏈接,告訴你如何做到這一點。 –
這個問題和答案把整個事情放在一個方便的概括:http://stackoverflow.com/questions/14440698/setup-entity-framework-for-dynamic-connection-string。 –