DbProviderFactory与Npgsql?

时间:2010-08-02 04:22:11

标签: .net postgresql mono dbproviderfactories

我有一个项目,我正在尝试从SQL Server移植到PostgreSQL。除了我无法让DbProviderFactory使用Npgsql之外,我几乎已经完成了所有工作。

Factory = DbProviderFactories.GetFactory("Npgsql");

产量

  

未处理的例外情况:   System.Configuration.ConfigurationErrorsException:   无法找到或加载已注册的   .Net框架数据提供商。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:13)

尝试在app.config中定义工厂:

<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider" invariant="Npgsql"
         description="Data Provider for PostgreSQL"
         type="Npgsql.NpgsqlFactory, Npgsql" />
  </DbProviderFactories>
</system.data>

通过http://fxjr.blogspot.pt/2013/06/npgsql-code-first-entity-framework-431.html

答案 1 :(得分:10)

您是否阅读过the fine manual第3.4节“使用Npgsql和ProviderFactory”?

答案 2 :(得分:1)

类型属性值在 DbProviderFactories 条目中非常重要。

对我来说,版本号不正确。 正确的版本是:

<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider" 
         invariant="Npgsql" 
         support="FF" 
         description=".Net Framework Data Provider for Postgresql Server" 
         type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
  </DbProviderFactories>
</system.data>

您可以使用以下方法检索项目的值:

typeof(Npgsql.NpgsqlFactory).AssemblyQualifiedName

答案 3 :(得分:1)

这些是为我解决问题的步骤:

(1)将DbFactory提供程序添加到位于.NET Microsoft Frameworking文件夹中的machine.config文件

(2)使用gacutil

在GAC中注册npgsql.dll和mono.security.dll

分步详情:

(1)将DbFactory提供程序添加到machine.config

一个。转到相关的.NET框架配置目录(例如C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config)

湾编辑machine.config文件并将以下行添加到DbProviderFactories

<DbProviderFactories>
    <add name="Npgsql Data Provider" 
         invariant="Npgsql" 
         support="FF" 
         description=".Net Framework Data Provider for Postgresql Server" 
         type="Npgsql.NpgsqlFactory, Npgsql"/>
  </DbProviderFactories>

(2)在GAC中注册npgsql.dll和mono.security.dll

一个。检查npgsql和mono.security是否在GAC文件夹中 (我的GAC文件夹位于C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL)

如果没有,那么使用gacutil使用gacutil / i npgsql.dll在命令提示符下将npgsql安装到GAC

答案 4 :(得分:0)

在GAC中注册ngsql和mono.security dll,并在machine.config中添加dbfactory提供程序[32&amp; 64位版本]