【问题标题】:C#: Supporting multiple types of databases with Table AdaptersC#:使用表适配器支持多种类型的数据库
【发布时间】:2009-10-12 19:58:36
【问题描述】:

这是场景:

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

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

我是否对 Visual Studio 生成的数据集要求太多?如果没有,让它工作的诀窍是什么?

【问题讨论】:

    标签: c# strongly-typed-dataset


    【解决方案1】:

    我很久以前就放弃了使用设计器生成的 TableAdapter。没有简单的方法来控制它们的工作,也没有简单的方法来更改它们的连接字符串......当然,根本没有办法让它们与不同的 ADO.NET 提供程序一起工作,因为提供程序很难-编码在生成的代码中。 TableAdapter 甚至不继承公共基类,因此您可以编写通用代码(好吧,它们确实继承自组件,但这没什么用......)

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

    【讨论】:

    • 我认为现在是时候寻找更好的解决方案了……缺乏通用基类让我很烦恼。
    • TableAdapter 被声明为部分。您可以在 TableAdapters 上实现一个接口 :)
    • 是的,好点...但是它们不能从 DbDataAdapter 继承,因为它们已经从 Component 继承
    猜你喜欢
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多