EF6 + NPGSQL - App.Config设置 - 具有不变名称的提供商' Npqsql'要么没有注册等等

时间:2017-05-09 07:52:39

标签: entity-framework-6 npgsql

Visual Studio 2015 / .NET Framework 4.5

EntityFramework v6.1.3

EntityFramework6.Npgsql v3.1.0

Npgsql 3.2.2

我继承了一个包含EDMX EF6模型的项目,我无法在Visual Studio中打开(尽管代码运行正常)可能(??)因为我收到以下错误: -

  

"错误175:具有不变名称' Npgsql'的ADO.NET提供程序是   要么未在机器或应用程序配置文件中注册,要么   无法加载。有关详细信息,请参阅内部异常。"

相关的app.config设置如下所示: -

<entityFramework>
   <providers>
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>
    <defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql" />
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Npgsql"/>
      <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" support="FF"/>
    </DbProviderFactories>
  </system.data>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.2.2.0" newVersion="3.2.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

EDMX的Schema系列如下所示: -

<Schema Namespace="MyAppMOdel.Store" Alias="Self" Provider="Npgsql" ProviderManifestToken="4.0" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">

我对ProviderManifestToken =&#34; 4.0&#34;有点警惕设置,因为此项目以前使用SQL Server Compact 4.这里的正确值是什么?

关于什么错误的任何想法?

THX!

1 个答案:

答案 0 :(得分:0)

看起来有人手工做了一些改变: - (

经过大量的讨论(在使用Data Connections和EDM向导https://github.com/npgsql/npgsql/issues/1445时遇到问题)我可以看到ProviderManifestToken应该是&#34; 9.6.2&#34 ;;随着这一变化使我的EDMX我现在能够使用Visual Studio 2015打开它。

EDMX文件中的行现在看起来像

pdfExport