2009-01-12 60 views
8

我將我們的應用程序從「一組代碼&一個數據庫」更改爲「一組代碼到多個數據庫(每個客戶一個數據庫)」。在運行時爲Multitenant應用程序更改XSD ConnectionString

原始代碼是VS2005 ASP.NET(VB)&大量的XSD在單獨的DLL中。 web.config的ConnectionString將覆蓋運行時存儲在DLL中的一個。

現在我需要在每次聲明數據適配器/數據集/表時更改ConnectionString,因爲調用可能會從最後一次調用轉到不同的數據庫。

有沒有人對此有任何提示?

回答

6

經過一番研究,似乎XSD有一個名爲ConnectionModifier的屬性。

要找到它,請在您的XSD圖上單擊圖的TableAdapter部分(其中查詢已定義)。

在屬性窗口中,將ConnectionModifier更改爲Public,然後單擊Save。 (這似乎更改屬性爲頁面上的所有數據集了。)

回到你的網站的主要代碼,您現在就可以做這樣的事情:

'declare the adapter as normal 
Dim AdapterTest As New DataSetTestTableAdapters.TestTableAdapter 

'pass the new connection object into the now visible property 
AdapterTest.Connection = New Data.SqlClient.SqlConnection("Data Source=Myserver;Initial Catalog=TEST;Integrated Security=True;") 

只需要一個連接對象。

我還沒有給這個適當的測試! Unfortunatley,每當你從XSD聲明一些東西時,必須傳遞一個新的連接對象。

1

也發現雖然提到的屬性(ConnectionModifier)是Public,但它仍然不能通過代碼查看時它是一個QueriesTableAdapter。因此,我不得不花費相當長的時間去除這些並用普通的「使用查詢」塊代替它們。

另外,我相信現在項目似乎更快。這可能是縮小尺寸或使用「使用」所有的電話(原來的代碼早在我們的.NET時代,所以本來可以寫得更好)。

相關問題