C# 从连接获取提供程序名称

C# 从连接获取提供程序名称,c#,.net,C#,.net,我使用以下代码从连接中获取提供商名称和工厂: public string GetFactory(IDbConnection connection) { string provider = connection.GetType().Namespace; return DbProviderFactories.GetFactory(provider); } 不幸的是,这不适用于Sql Ce(compact edition),因为它不包含版本信息。我认为当安装同一驱动程序的多个版本时,这是一个

我使用以下代码从连接中获取提供商名称和工厂:

public string GetFactory(IDbConnection connection) {
  string provider = connection.GetType().Namespace;
  return DbProviderFactories.GetFactory(provider);
}
不幸的是,这不适用于Sql Ce(compact edition),因为它不包含版本信息。我认为当安装同一驱动程序的多个版本时,这是一个普遍的问题

Exmaple:上面的代码将使用提供程序“System.Data.SqlServerCe”,但dbProviderFactorys.GetFactoryClasses()中的实名表示“System.Data.SqlServerCe.3.5”


我在连接上找不到任何要与名称连接的提供程序版本属性。对于这种方法或其他方法有什么解决方案吗?

通常您会做相反的事情-从factoryCorrect获取连接,这段代码是断章取义的。它在DAL中用于从数据库检索对象。如果应用程序创建多个连接,或者需要在原始连接释放后创建新连接,则工厂是必需的。