代码之家  ›  专栏  ›  技术社区  ›  Austin Salonen gmlacrosse

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

  •  0
  • Austin Salonen gmlacrosse  · 技术社区  · 15 年前

    下面是场景:

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

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Thomas Levesque    15 年前

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

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