2012-02-21 54 views
2

我正在使用WinForm應用程序。我已將數據訪問邏輯實現爲「庫項目」,我在WinForm項目中將其設置爲參考。我正在使用LINQ to SQL連接到我的項目數據庫,將我使用的表映射到dbml文件中。現在,我必須發佈我的項目並將連接字符串更改爲指向生產數據庫。更改連接字符串而不重新編譯

是否可以在不重新編譯項目的情況下更改連接字符串? 這將是在調試時間和維護非常有用......

我試圖改變它在app.config並在Settings文件,但它似乎仍然指向發展DB。

我在哪裏做錯了?

+0

你可以創建一個最小的測試用例嗎?儘可能小的應用程序仍然存在問題? – 2012-02-21 09:02:45

+0

你的連接字符串是在哪裏定義的? – 2012-02-21 09:02:59

+0

@KirillPolishchuk我創建了一個用於訪問數據的dll項目。當我創建我的dbml文件並把它放在裏面時,連接字符串被保存在'settings'文件中,並且也保存在我的「data-access-project」的'app.config'文件中。我想在項目中指定連接字符串作爲參考此dll ...是否有可能? – davioooh 2012-02-21 09:09:03

回答

3

在這篇文章中提出的解決方案是非常好的:http://goneale.com/2009/03/26/untie-linq-to-sql-connection-string-from-application-settings/

但我還是決定來解決我的問題以不同的方式。

沒有在dbml文件我在DAO類添加一個構造函數的參數修改點兒:

public MyDataAccessClass(string connectionString) 
{ 
    _connString = connectionString; 
} 

然後而是採用DataClasses()構造函數來實例化LINQ到SQL類的,我取代了它與DataClasses(_connString)

現在我可以在需要的地方使用數據訪問庫。連接字符串將在引用應用程序(或其他任何地方)的app.config中設置。