C#:使用表适配器支持多种类型的数据库

时间:2009-10-12 19:58:36

标签: c# strongly-typed-dataset

以下是该方案:

我希望能够使用强类型数据集支持SQL Server CE和SQL Server 200x数据库。

我得到的问题是它使用特定类型的连接(SqlConnection或SqlCeConnection)进行编译,因此我无法在运行时将类型更改为任何IDbConnection对象。

我是否从Visual Studio生成的数据集中询问过多?如果没有,让它发挥作用的诀窍是什么?

1 个答案:

答案 0 :(得分:1)

我很久以前就放弃了使用设计师生成的TableAdapters。没有简单的方法可以控制他们所做的事情,也没有简单的方法来改变所有人的连接字符串...当然,完全不能让他们使用不同的ADO.NET提供者,因为提供者很难 - 在生成的代码中编码。 TableAdapter甚至没有继承一个公共基类,所以你可以编写通用代码(好吧,它们确实从组件继承,但这很无用......)

相反,我使用自己的自制“TableAdapter”生成器。它使用DbDataAdapter从SELECT查询构建DbCommandBuilder(实际上,SELECT查询甚至不是必需的,因为它可以从DataTable的结构中推断出来)。对于需要特定逻辑的更复杂的DataTables,我会让它们实现自定义IDataAdapterProvider,以便他们可以提供自己的DbCommands