我正在尝试将Postgres数据库连接到EDMX设计器。
我安装了EntityFrameowrk6.npgsql块模块,如下所述:Gearman(数据库已经有uuid-ossp扩展名)
然后我安装了扩展程序包,如下所述:http://www.npgsql.org/ef6/index.html
最后,我已将npgsql模块更新为v3.2.1以匹配集成文档中建议的扩展版本。
我可以使用visual studio的服务器浏览器连接到我的数据库。
执行此操作后,我已经将ado.net实体数据模型添加到我的项目中,但他只有我可用的提供程序是Microsoft sql。看不到Postgres!
我正在运行2017年的Visual Studio社区,这是完全最新的,并且安装的唯一其他扩展是AnkhSVN。这是一个目前为.net 4.5.1配置的C#项目(但我非常高兴并愿意更改目标框架以使其工作!)
我项目中唯一的Nuget包是上面介绍的和它们的依赖关系。
很多谷歌搜索导致只是各种教程告诉我基本上做上面的事情,或者人们向app.config添加元素(我已尝试过但失败了,并且还原)npgsql文档明确指出你不应该需要做的。
非常感谢任何帮助!
编辑:这是我目前的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>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<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.1.0" newVersion="3.2.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
答案 0 :(得分:0)
原来我遇到的问题是在添加NuGet之后我没有重建我的项目/解决方案。主要是因为我用Postgre替换旧的SQL EF实现,并且由于无数缺少引用而无法构建。
这里的问题表明,重建是应该发生的事情:Entity Framework 6.1.1 and Npgsql 2.2.3: Compatible Entity Framework database provider could not be found
所以,我评论了我的大部分代码,重建了,并且提供商已经出现在我期待的地方。
它 崩溃了Visual Studio(嘘嘘!),但这是一个单独的问题。
我希望这对一些可怜的灵魂有所帮助。