2010-01-22 51 views
3

如何更改基於Linq的WebApp的底層數據庫?在LinqToSql中切換數據庫

例如:

當我們發佈的Web應用程序,比方說,從產能的釋放,如果使用ADO.NET, 正是因爲在web.config中修改連接字符串爲簡單指向正在使用的實時數據庫。數據庫幾乎完全相同,其他數據存儲在一起。

什麼以及如何在使用LINQ時更改unerLying數據庫?

注意;使用C#

感謝

+0

web.config中沒有連接字符串嗎? 應該有一個與屬性providerName =「System.Data.SqlClient」 – nWorx 2010-01-22 16:53:34

+0

有一個,但需要保持在那裏,爲現場和生產。 需要在釋放產品時交換它們,而不是手動刪除/編輯它 – 2010-01-22 17:03:45

回答

1

我強烈建議你在你的應用程序中實例化帶有連接字符串重載的數據上下文。我創建了一個助手組件,做:

public static class DCHelper 
{ 
    public static MyDataContext Create() 
    { 
    return new MyDataContext(ConfigurationManager.ConnectionStrings["CS"].ConnectionString); 
    } 
} 

這樣的話,我只有一個地方可以更改上下文被實例化的方式,或者我可以更改配置文件切換數據庫。或者,創建方法可以採取一些輸入來確定連接。

+0

感謝隊友,工作完成 – 2010-01-22 19:09:27

-1

如果你只是想知道你可以移動connection string to the Web.Config裏克施特拉爾在他的博客的example

如果您想更改爲不同類型的數據庫......您可能可以節省大部分(如果不是全部查詢)。但您需要更改提供程序/存儲庫。 LINQ 2 SQL此時只支持MSSQL(這就是它的真正意圖)

如果您需要更多靈活性,請查看LINQ to Entities

+0

很確定OP詢問有關更改連接字符串,而不是數據庫類型 – bdukes 2010-01-22 16:47:44

+0

數據庫是相同類型的(SQL SERVER 2005),區別在於「生產數據庫「和」Live DB「 – 2010-01-22 16:48:36

+0

是的,當我發佈我的答案後,我看到了。我添加了一個註釋。 – 2010-01-22 16:50:57

4

你應該仍然可以這樣做; DataContext(包括SqlMetal生成的)包含接受連接字符串的構造函數重載。只要取你ConfigurationManager(或其他)想要的字符串,並傳遞它

其實,如果你不介意,直接亂砍DBML,但它實際上是支持從ConfigurationManager直接閱讀。問題在於IDE設計者討厭這一點,並且每當你看到它時就會打破它。這是一種恥辱(discussed here)。

+0

感謝隊友,感激, – 2010-01-22 17:01:03