Visual Studio 2015/.NET Framework 4.5
实体框架 v6.1.3
实体框架6.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 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="4.0" 设置有点谨慎,因为这个项目以前使用的是 SQL Server Compact 4。这里的正确值是什么?
有什么想法吗?
感谢!
看起来有人手动进行了一些更改:-(
经过很多失误(在数据连接和EDM向导 https://github.com/npgsql/npgsql/issues/1445 遇到问题(之后,我可以看到ProviderManifestToken应该是"9.6.2";随着这一更改使我的EDMX我现在能够在Visual Studio 2015中打开它。
EDMX 文件中的行现在看起来像
<Schema Namespace="MyAppModel.Store" Provider="Npgsql" ProviderManifestToken="9.6.2" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">