【问题标题】:Entity Framework 6 with Npgsql带有 Npgsql 的实体框架 6
【发布时间】:2014-01-30 17:56:28
【问题描述】:

我想在 ASP.NET MVC 4 项目中使用 Entity Framework 6 和 PostgreSQL。我得到了 Entity Framework 6.0.2 + Npgsql 2.0.14.3,但我得到了错误。我该如何解决这个问题?

错误:

在 mscorlib.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

附加信息:实体框架提供程序类型“Npgsql.NpgsqlServices, Npgsql, Version=2.0.14.3, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7”的“Instance”成员未返回从“System.Data”继承的对象.Entity.Core.Common.DbProviderServices'。实体框架提供者必须从此类继承,并且“实例”成员必须返回提供者的单例实例。这可能是因为提供者不支持 Entity Framework 6 或更高版本;请参阅http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。

Web.config

<system.data>
  <DbProviderFactories>
    <add name="Npgsql Data Provider"
        invariant="Npgsql"
        description="Data Provider for PostgreSQL"
        type="Npgsql.NpgsqlFactory, Npgsql" />
  </DbProviderFactories>
</system.data>
<connectionStrings>
  <add name="DatabaseContext" connectionString="Server=localhost;port=5432;Database=main;User Id=postgres;Password=password;" providerName="Npgsql" />
</connectionStrings>
<entityFramework>
  <providers>
    <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql" />
  </providers>
</entityFramework>

【问题讨论】:

标签: c# asp.net-mvc postgresql asp.net-mvc-4


【解决方案1】:

我需要像这样安装 Npgsql:

Install-Package Npgsql.EF6 -Pre

它安装了不同的版本。

更新: 我发现对于较新的 beta 版本,您可以编写

install-package Npgsql.EntityFramework -pre

【讨论】:

  • +1 - 不知道你是怎么想出来的,但你通过跟进答案为我节省了大量时间。谢谢;-)
  • 我刚刚添加了更多关于需要 Npgsql 2.1 版本以获得 EF 6 支持的 cmets 以及对 NpgsqlEntityFramework 的引用。我希望这些指导能帮助新用户更快地进行。感谢您的提醒!
  • 另一个细节是,从 Npgsql 2.1.0 开始,注册提供者的行必须是: for EF6 或更高版本或 用于 EF5 及更低版本。这是必需的,因为我们将 EF 代码移到了单独的程序集中。
  • 我完成了所有这些工作,但是在尝试使用 EF Power Tools(使用 postgres db 进行反向工程代码优先)时,它失败并显示无法加载文件或程序集 'Npgsql.EntityFrameworkLegacy,版本 = 2.2。 0.0 即使我为提供者指定了 Npgsql.EntityFramwork(假设是 EF6)
猜你喜欢
  • 2015-12-26
  • 2017-03-28
  • 2013-11-19
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多