给定一个连接对象(或一系列连接对象),是否有人知道回溯并获取提供者名称的方法?
我正在尝试创建一个通用数据集生成器,有人可以加载 n DbCommand实例填充数据集而无需任何进一步的信息。
理论上,由于命令需要连接对象,因此创建此工具所需的所有信息都是。
鉴于我正在填充数据集中的表,我认为最简单的方法是使用DataAdapter。唯一的问题是,要生成一个通用的DataAdapter,我似乎必须通过提供程序工厂,这需要一个提供程序字符串 - 我没有。
另外,鉴于每个命令的提供程序可能有所不同(即跨多个数据库的命令),是否有人有任何建议可以保持这一点?
如果可以避免,我不想要求用户为每个命令对象提供提供程序字符串。这样用户就可以传递一个DbCommands的参数数组,我可以从那里获取它。
任何建议都非常有用。感谢。
答案 0 :(得分:1)
有DbConnection.DbProviderFactory
属性正是这样做的;唯一的问题是它是protected
。请注意,这仍然意味着它是已发布的API,因此使用Reflection访问它不应该容易出现版本破坏,尽管它需要适当的权限才能绕过可见性检查。