以下是该方案:
我希望能够使用强类型数据集支持SQL Server CE和SQL Server 200x数据库。
我得到的问题是它使用特定类型的连接(SqlConnection或SqlCeConnection)进行编译,因此我无法在运行时将类型更改为任何IDbConnection对象。
我是否从Visual Studio生成的数据集中询问过多?如果没有,让它发挥作用的诀窍是什么?
答案 0 :(得分:1)
我很久以前就放弃了使用设计师生成的TableAdapters。没有简单的方法可以控制他们所做的事情,也没有简单的方法来改变所有人的连接字符串...当然,完全不能让他们使用不同的ADO.NET提供者,因为提供者很难 - 在生成的代码中编码。 TableAdapter甚至没有继承一个公共基类,所以你可以编写通用代码(好吧,它们确实从组件继承,但这很无用......)
相反,我使用自己的自制“TableAdapter”生成器。它使用DbDataAdapter
从SELECT查询构建DbCommandBuilder
(实际上,SELECT查询甚至不是必需的,因为它可以从DataTable
的结构中推断出来)。对于需要特定逻辑的更复杂的DataTables
,我会让它们实现自定义IDataAdapterProvider
,以便他们可以提供自己的DbCommands
。