2011-02-28 93 views
27

我可以將Dbml.designer.cs中的連接字符串指向app.conf中的連接字符串嗎?我寫下了它成功指向app.config的代碼。在dbml中將連接字符串指向app.config

public leDataContext() : 
    base(ConfigurationManager.ConnectionStrings["leConnString"].ToString(), mappingSource) 
    { 
     OnCreated(); 
    } 

但是每當我修改或添加到表dbml的,它會開始自動替換代碼到這個

public leDataContext() : 
      base("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\My Projects\\App_Data\\le.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True", mappingSource) 
    { 
     OnCreated(); 
    } 

我已經擴大了「連接」選項。將「應用程序設置」設置爲False

回答

38

請勿手動修改Dbml.designer.cs文件,因爲在編輯/添加表格等操作時它會被重寫,如您所說。取而代之的是在Connection屬性爲.dbml設計文件設置爲None,並添加一個部分類參數的構造函數:

public partial class leDataContext 
{ 
    public leDataContext() : 
     base(ConfigurationManager.ConnectionStrings["leConnString"].ToString()) 
    { 
     OnCreated(); 
    }  
} 
+0

我必須做出connnection是空的,並添加新構造函數與其他構造函數一起使用。但是它仍然會變成base(「Data Source =。\\ SQLEXPRESS; AttachDbFile..' public leDataContext(): base(System.Configuration.ConfigurationManager.ConnectionStrings [」leConnString「]。ToString()) { OnCreated ();} 公共leDataContext(串連接): 基(連接,mappingSource) { OnCreated();} 公共leDataContext(System.Data。IDbConnection連接): base(connection,mappingSource) {OnCreated(); } – VeecoTech 2011-03-01 13:04:49

+1

@belinq:你應該添加一個新文件並在那裏定義無參數的構造函數(在部分類中)。在這種情況下,這個構造函數不會被覆蓋。據我瞭解,你把這個構造函數放到'dbml.designer.cs'文件中 - 這就是問題所在。 – Alex 2011-03-01 13:09:32

+1

注意:在Visual Studio 2013中,我們沒有該連接屬性,因此我只是直接從dbml xml文件中刪除了連接節點。 – 2016-03-07 13:52:18

41

這更像是一個擴展@亞歷克斯的答案。

步驟1:將.dbml文件的連接屬性設置爲「無」。

enter image description here

步驟2:具有相同名稱與用於.dbml文件現有局部類的創建一個新的單獨的部分的類。並通過使用無參數構造函數來設置connectionString屬性。

public partial class DataClassesDataContext 
{ 
    public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["Dev-connString"].ConnectionString) 
    { 
    OnCreated(); 
    } 
} 

第3步:就快完成了!最後,你需要在你的app.config文件中定義你的connectionString,如下所示。

<connectionStrings> 

    <add 
    name="Dev-connString" 
    connectionString="Data Source=yasser-home;Initial Catalog=pp;Persist Security Info=True;User ID=sa;Password=gogole" 
    providerName="System.Data.SqlClient" /> 

</connectionStrings> 

現在,您可以輕鬆地改變從app.config文件中的connectionString,而無需重新編譯代碼,這將是情況並非如此。

爲什麼我要創建一個單獨的部分類?我無法編輯現有的Dbml.designer.cs文件嗎?

不要修改Dbml.designer.cs手動檔,因爲它會被改寫,當你添加/編輯/刪除表,存儲過程等

+0

謝謝。並將連接屬性設置爲none,否則它將定義它自己的構造函數 – symbiont 2016-11-01 08:06:54

+0

小增加;要將連接字符串設置爲無,您需要打開dbml,以便它顯示左側的模型架構。然後右鍵單擊架構並單擊屬性。 – Yan 2017-06-30 13:07:30

+0

這應該是答案,因爲它包含進一步的說明。 – levis84 2017-10-18 08:38:49

相關問題