2012-06-26 68 views
12

每當我將修改後的表格拖入我的dbml時,VS2010都希望我更新連接字符串,即使我已經創建了具有確切相同的信息。每次發生這種情況時,它都會將連接字符串更改爲'DataSourceConnectionString',我必須從5個不同的文件中刪除它,並將其替換爲之前使用的連接字符串的名稱,以便它不會讓其他人使用該文件源代碼管理。有任何想法嗎?當我將表格拖入dbml文件時,從更新連接字符串停止LINQ to SQL dbml

回答

17

在修改了一些相關問題的答案之後,我找到了另一個人。

爲了解決我遇到的問題,我需要刪除從VS2010服務器瀏覽器窗口中創建的用於連接到我的數據庫的數據連接。然後您需要打開.dbml設計器並右鍵單擊空白處並選擇屬性。一個屬性窗口將打開,並會出現一個「連接」部分,點擊小箭頭將其打開。如果你點擊連接字符串行,一個按鈕就會出現點(...)。當你點擊這個按鈕時,它將打開一個連接屬性窗口。這個窗口已經具有您的.dbml已經具有的所有相同的連接屬性。所有你需要做的就是點擊'確定',它會自動在服務器資源管理器中爲你創建一個數據連接,當你拖動一個新的對象時,它不會讓你添加一個新的連接字符串到.dbml!

耶!每次更新時不再刪除額外的連接字符串! :D

+0

這太奇怪了,但是非常感謝。我討厭MS剛剛停止使用LINQ to SQL。用Entity Framework重建所有東西都是很多工作的方式。 – Olaj

+0

是的!有用。但我想知道如何?!它是如何做到的?! – Mohammadreza

+0

謝謝。 @Stuck yes這很奇怪 – Mohammadreza

2

當你實例化你的DataContext時,使用允許你指定連接字符串的重載。這將覆蓋Designer所放置的值。例如,而不是隻是:

DataClasses1DataContext db = new DataClasses1DataContext(); 

使用:

DataClasses1DataContext db = new DataClasses1DataContext("..connection string.."); 

DataClasses1DataContext db = new DataClasses1DataContext(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

希望這是你在找什麼。

+0

我沒想到要這樣做。因爲我有靜態類,我稱之爲需要實例化DataContext的靜態類,所以輸入那一百萬次是件麻煩事。實際上我昨天已經想清楚了,但幾個月以來一直有這個問題,所以我想把它發佈給其他人。感謝您的回覆 –

+0

看來,VS 2012終於通過不將連接字符串烘焙成代碼而得到了正確的結果。在VS 2012中,不帶參數實例化數據上下文將調用一個構造函數,該構造函數從web.config中的AppSettings中讀取一個值。所使用的AppSettings鍵可以在dbml文件的Properties選項卡中更改/設置。 –