实体框架6.1.1和Npgsql 2.2.3:找不到兼容的实体框架数据库提供程序

时间:2014-12-19 12:46:43

标签: c# entity-framework postgresql visual-studio-2012 npgsql

我正在使用Visual Studio 2012 Update 4中的EntityFramework 6.1.1和npgsql 2.2.3开发项目。为此,我使用提供的安装程序安装了npgsl并安装了nuget软件包“Npgsql”和“Npgsql for Entity Framework” “(当然,还有”EntityFramework“本身)。

过去一切都很好:我可以成功访问我的数据库一段时间 - 直到某一天所有事情都“爆炸”。

这是事件历史记录:

  • 在主要代码升级后修复编译器错误我遇到了以下错误消息:
    • “无法加载npgsl.EntityFrameworkLegacy assmbly”(我既未安装也未引用此程序集)
    • 无法找到大量“元数据文件'xxx'”错误,其中'xxx'指向我自己的所有项目程序集
  • 我找到了可能的解决方案“元数据文件”问题 - 比如删除.suo文件,检查项目构建顺序等等。他们都没有解决问题。所以我删了 来自我的项目的.edmx文件(以及所有自动生成的数据库访问文件)。这解决了“元数据文件”问题 - 当然引入了“未解决的符号”。
  • 我尝试在项目中添加一个新的“ADO.NET实体数据模型”以重新获得数据库访问权限。只有连接列表中没有列出的所有PostgreSQL数据库连接。 此外,我无法创建新的PostgreSQL连接,因为未列出此数据源。虽然这并没有影响其中的全局“数据连接”对话框 Visual Studio:在这里我仍然可以访问我的PostgreSQL连接。
  • 我使用安装程序重新安装了npgsql。现在我可以创建一个新的“ADO.NET实体数据模型”并连接到我的PostgreSQL数据库。但是这次我收到错误信息: “您的项目引用了最新版本的Entity Framework;但是,无法找到与此版本兼容的Entity Framework数据库提供程序 [...]”。这是 我现在被困住了。

我目前的设置是:

  • 该项目涉及以下程序集:
    • 适用于.NET 4.5的EntityFramework 6.1.1
    • EntityFramework.SqlServer 6.1.1 for .NET 4.5
    • Npgsql 2.2.3 for .NET 4.5
    • 适用于.NET 4.5的Npgsql.EntityFramework 2.2.3
  • 这是我的app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
    </providers>
  </entityFramework>
</configuration>
  • 我的machine.config(32位和64位)中都有这个:
  <system.data>
    <DbProviderFactories>
      <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" support="FF" />
    </DbProviderFactories>
  </system.data>

在我添加新模型之前,我试图重建我的解决方案。但这没有用。

我可能错过了其他任何配置问题吗?

任何能解释我为什么会发生这一切的人?

0 个答案:

没有答案