2008-12-13 87 views
1
表適配器

我的應用程序已經開發,現在我們要改變任何存儲在會話對象的連接字符串(分佈式數據庫管理系統的Bcoz(分佈式數據庫管理系統))指定連接字符串從會話

問題是在這裏.....

In that application There are so many **ObjectDataSource** which are 

初始化與使用.XSD 文件。這是關係到 的TableAdapter其連接字符串中的TableAdapter 是從Web.config文件分配。 現在如何將連接 字符串更改爲存儲在會話 對象中的任何對象?

在此先感謝。

回答

7

要在運行時更改XSD的連接,您需要將表適配器的ConnectionModifier屬性設置爲Public。如果它們是由「嚮導」創建的,則默認情況下它們將設置爲Friend/Internal(VB/C#)。

我無法找到ConnectionModifier屬性(它沒有在我的vs2005文檔中列出)!如果單擊XSD的較低區域(查詢所在的位置),則應該在屬性窗口中可見,以便更改。

然後,您可以設置連接屬性(它使用一個對象而不是一個字符串)在哪裏聲明您的表適配器。

1

這是我討厭Typed Datasets的原因之一,實際上也是LinqToSQL的一個缺點(但更容易解決)。

我認爲你一旦改變連接字符串或者進入並「自定義」它們在運行時使用連接字符串而不是複製,而是複製所有類型化數據集而不是複製它在設計時從web.config中獲取。如果您「自定義」,則必須擔心在進行任何導致類型數據集重新創建的更改時丟失自定義代碼。這是優點/缺點。

編輯:我誤解了這個問題。解決方案仍然是一樣的,但只有我提出的第二個解決方案是可行的。您必須自定義您的TableAdapter代碼,然後在對類型化數據集進行更改時小心維護它。

0

我有一個winforms應用程序,我有一個類似的問題。我創建了一個包含我的設置(clsGlobal)的靜態類,其中一個屬性是連接字符串。在我引用數據表的頁面中,我將連接字符串設置爲clsGlobal.gstrConnectionString或連接字符串屬性。在應用程序初始化階段執行此操作可能會更好。但是,在應用程序啓動時從共享屬性設置tableadapter連接字符串應該可以解決這個問題。

myTableAdapter.Connection.ConnectionString = clsGlobals.gstrConnectionString; 

所以,你只.ToString()您的會話對象並將其分配給ta.Connection.ConnectionString。

1

生成的表格適配器是一個部分類。這意味着您可以在另一個文件中添加該類的代碼。 您可以將表格適配器的Connection屬性設置爲公開,並根據客戶端代碼進行修改。幾乎不是一個好的解決方案,但也許是唯一的解決方案。