【发布时间】:2009-10-12 19:58:36
【问题描述】:
这是场景:
我希望能够使用强类型数据集同时支持 SQL Server CE 和 SQL Server 200x 数据库。
我遇到的问题是它使用特定类型的连接(SqlConnection 或 SqlCeConnection)进行编译,因此我无法在运行时将类型更改为任何 IDbConnection 对象。
我是否对 Visual Studio 生成的数据集要求太多?如果没有,让它工作的诀窍是什么?
【问题讨论】:
这是场景:
我希望能够使用强类型数据集同时支持 SQL Server CE 和 SQL Server 200x 数据库。
我遇到的问题是它使用特定类型的连接(SqlConnection 或 SqlCeConnection)进行编译,因此我无法在运行时将类型更改为任何 IDbConnection 对象。
我是否对 Visual Studio 生成的数据集要求太多?如果没有,让它工作的诀窍是什么?
【问题讨论】:
我很久以前就放弃了使用设计器生成的 TableAdapter。没有简单的方法来控制它们的工作,也没有简单的方法来更改它们的连接字符串......当然,根本没有办法让它们与不同的 ADO.NET 提供程序一起工作,因为提供程序很难-编码在生成的代码中。 TableAdapter 甚至不继承公共基类,因此您可以编写通用代码(好吧,它们确实继承自组件,但这没什么用......)
相反,我使用自己自制的“TableAdapter”生成器。它使用DbCommandBuilder 从SELECT 查询构建DbDataAdapter(实际上,甚至不需要SELECT 查询,因为它可以从DataTable 的结构中推断出来)。对于需要特定逻辑的更复杂的DataTables,我让他们实现自定义IDataAdapterProvider,以便他们可以提供自己的DbCommands。
【讨论】: