Postgresql、实体框架和Mono 3

Postgresql、实体框架和Mono 3,postgresql,entity-framework-4,mono,monodevelop,Postgresql,Entity Framework 4,Mono,Monodevelop,我正试图让EF在Linux平台上与Postgresql一起工作。尝试连接到数据库时,出现以下错误:未能找到或加载已注册的.Net Framework数据提供程序“Npgsql数据提供程序”。我的app.config文件: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="entityFramework"

我正试图让EF在Linux平台上与Postgresql一起工作。尝试连接到数据库时,出现以下错误:未能找到或加载已注册的.Net Framework数据提供程序“Npgsql数据提供程序”。我的app.config文件:

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
    <configSections>
      <section name="entityFramework"
        type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" />
    </configSections>
    <system.data>
      <DbProviderFactories>
        <remove invariant="Npgsql"></remove>
        <add name="Npgsql Data Provider" 
          invariant="Npgsql" 
          description=".Net Framework Data Provider for Postgresql Server" 
          type="Npgsql.NpgsqlFactory, Npgsql, Version=4.0.0.0, Culture=neutral" />
      </DbProviderFactories>
    </system.data>
    <connectionStrings>
      <add name="MinDatabase" connectionString="Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=;CommandTimeout=20;" 
        providerName="Npgsql Data Provider" />
    </connectionStrings>
  </configuration>


如何使Mono加载数据提供程序?

错误消息包含不变名称,因此它正在查找具有不变名称“Npgsql数据提供程序”的内容,并且您专门将不变名称设置为Npgsql。因此,可以尝试更改为在整个配置中使用相同的名称,如下所示:

<system.data>
  <DbProviderFactories>
    <remove invariant="Npgsql"></remove>
    <add name="Npgsql" 
      invariant="Npgsql" 
      description=".Net Framework Data Provider for Postgresql Server" 
      type="Npgsql.NpgsqlFactory, Npgsql, Version=4.0.0.0, Culture=neutral" />
  </DbProviderFactories>
</system.data>
<connectionStrings>
  <add name="MinDatabase" connectionString="Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=;CommandTimeout=20;" 
    providerName="Npgsql" />
</connectionStrings>


希望它能工作

您从哪里下载Npgsql的?如果您使用的是官方版本中的Npgsql,那么问题在于程序集的版本属性。支持EF4.x的Npgsql版本为2.0.14.3,支持EF6的Npgsql版本为2.1.0。没有一个版本是4.0.0.0

有关将Npgsql与实体框架一起使用的更多信息,请查看:

我希望有帮助