8

我正在将我们的应用程序从“一组代码和一个数据库”更改为“一组代码到多个数据库(每个客户一个数据库)”。

原始代码是 VS2005 ASP.NET(VB) 和大量 XSD 在单独的 DLL 中。web.config 的 ConnectionString 将在运行时覆盖存储在 DLL 中的连接字符串。

现在我需要在每次声明数据适配器/数据集/表时更改 ConnectionString,因为调用可能会与上次调用不同的数据库。

有人对此有任何提示吗?

4

2 回答 2

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;")

它只需要一个连接对象。

我还没有对此进行适当的测试!不幸的是,每次您从 XSD 声明某些内容时,都必须传递一个新的连接对象。

于 2009-01-12T17:01:41.007 回答
1

还发现虽然提到的属性(ConnectionModifier)是Public,但是当它是QueriesTableAdapter时,仍然无法通过代码看到。因此,我不得不花很长时间删除这些并用普通的“使用查询”块替换它们。

另外,我相信这个项目现在看起来更快了。这可能是尺寸的减小或现在对所有调用使用“使用”(原始代码在我们的 .NET 时代很早,所以本来可以写得更好)。

于 2009-01-27T14:21:48.680 回答