0

我有许多具有相同结构的数据库,并且我设计了一个与数据库设计相匹配的数据集。使用在设计时询问并在 app.config 中定义的 connectionStrings 很容易连接到数据库。但是当试图在运行时更改数据库时会出现问题。我找不到任何非反射解决方案来处理它。有没有其他方法可以在运行时动态更改数据集的连接字符串,或者至少创建具有不同连接字符串的数据集!!!

4

2 回答 2

0

gzaxx 答案将不起作用,仅仅是因为不同的 DBMS 与不同的 ADO.NET 提供程序一起工作,这些提供程序可能相互兼容,也可能不兼容。它背后有很多理论,我不会在这个文本框中输入所有这些,但您需要了解主要问题是 TableAdapters,而不是 DataTable。您的业​​务和 UI 层通常只与 DataTables 对话,因为您在创建表列时正确使用了相应的数据类型,所以几乎所有 DBMS 都具有相同的结构。因此,理论上,如果 Typed DataSets 可以提供一种为每个 DataTable 附加多个适配器的方法,那么您可以为您支持的每个 DBMS 添加一个适配器,同时保持 DataTable 结构相同。

我自己不得不在一个有点大的项目中处理这个问题,对我来说唯一可行的解​​决方案是将我的数据访问分离到一个单独的项目(一个类库)中,然后为我支持的每个 DBMS 创建一个这样的 DLL。希望这可以帮助您入门。

于 2013-02-11T11:21:01.487 回答
0

您正在填充DataSet使用TableAdapter,您可以轻松地修改TableAdapter连接字符串,如下所示:

myTableAdapter.Connection.ConnectionString = connectionString;

希望这可以帮助 :)

于 2013-02-11T11:09:12.247 回答