EF/Postgres SQL 数据库优先方法可能吗?

sst*_*sin 5 postgresql entity-framework

经过几个小时的搜索,我有点失望。任何人都可以确认(或不)使用 EF 数据库优先方法(我的意思是,使用 VS EDMX degigner)可以与现有的 Postgres SQL 数据库一起使用吗?

一些要求:

  • 我想使用 ngsql 提供程序,因为它是免费的(但我不确定它是否适用于数据库优先的方法)
  • 我不想使用 Devart Connect 提供程序,因为它不是免费的,而且是用于个人项目的。我可以考虑快速版本,但我认为它不适用于设计模式。

干杯

Mor*_*rdy 7

这个问题出现在大多数谷歌搜索 EF Database First with Postgres 中,接受的答案指向 CODE first 而非 DATABASE 的演练,所以我将添加一个指向这个答案的指针,这使我获得了解决它的大部分方法:

Visual Studio 2015 中的向导中缺少 PostgreSQL 数据提供程序

本质上,postgres 有一个 Visual Studio 扩展(只需在 Postgres 的扩展和更新中搜索),但我还必须修改 app.config 中的实体框架节点,因为它是在我安装扩展之前添加的,如下所示:

  <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, EntityFramework6.Npgsql" />
    </providers>
  </entityFramework>
Run Code Online (Sandbox Code Playgroud)

这将 npgsql 添加为数据提供者,在我这样做之后,数据提供者作为选项出现在 EF 数据库第一个向导中。


Chr*_*ers -4

对的,这是可能的。快速谷歌搜索发现了一个演练,但没有表明有任何特殊的陷阱。

我要指出的是,我对代码优先的 ORM 框架持怀疑态度,因为我认为它们遗漏了数据库设计的关键方面,从而鼓励了没有对未来进行真正规划的数据库,所以我认为它在某种程度上是一种专门的工具,但是答案似乎是肯定的,它有效。

  • 然而OP想要对一个已经存在的数据库进行逆向工程,其质量与OP的ORM无关。 (3认同)