2012-02-16 48 views
1

我在VS 2010(C#.Net 4.0)中使用Linq2Sql來處理我的數據庫訪問。這一切都很好。防止某些Linq2Sql設計器代碼覆蓋

但是因爲我的DataContext與我的Web應用程序(數據訪問層)位於不同的層中,所以我已將它配置爲在調用Web應用程序web.config文件中使用連接字符串。

最終結果需要對Linq2Sql設計器文件(DB.designer.cs)進行一次更改,即覆蓋第一個構造函數參數(默認情況下爲數據庫連接字符串的字符串)並將其替換爲像如下:

System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString 

的問題,我目前似乎有是,當我更新通過GUI設計師設計師(拖放部分)則重置該代碼變回一個硬編碼的連接字符串。

有人可以告訴我,如果我可以改變一個設置,以防止這種情況?或者我是否需要部分課程?或者完全是另一種方式?

回答

2

這就是partial methods派上用場!謝天謝地,LINQ2SQL DataContext加載了幾個非常有用的。 說你的DataContext被命名爲AutosDataContext就像我的例子。與您的DBML一起創建一個新課程,並將其稱爲AutosDataContext。然後填寫它如下:

public partial class AutosDataContext 
    { 
     partial void OnCreated() 
     { 
      this.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 
     } 
    } 

局部OnCreated方法被調用DataContext的實例化後的權利,使完美的地方讓你沒有DBML設計師的更新就可以走添加自定義的連接字符串邏輯。

+0

謝謝你。似乎很好;) – musefan 2012-02-16 16:52:22