【问题标题】:EF/Postgres SQL database-first approach possible?EF/Postgres SQL 数据库优先方法可能吗?
【发布时间】:2018-02-27 18:51:41
【问题描述】:

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

一些要求:

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

干杯

【问题讨论】:

  • @marc_s ...你对我原来的帖子做了什么改变??
  • 好的 marc_s .. 对不起拼错的单词和我糟糕的英语:(

标签: entity-framework postgresql


【解决方案1】:

这个问题出现在大多数使用 Postgres 搜索 EF Database First 的谷歌搜索中,并且接受的答案指向先演练 CODE first 而不是 DATABASE first 所以我将添加一个指向这个答案的指针,这让我大部分时间解决它:

PostgreSQL data provider missing from wizard in Visual Studio 2015

基本上有一个用于 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>

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

【讨论】:

    【解决方案2】:

    是的,这是可能的。快速的 Google 搜索发现了 walkthrough,这并不表明存在任何特殊问题。

    我会注意到我对代码优先的 ORM 框架持怀疑态度,因为我认为它们遗漏了数据库设计的关键方面,因此鼓励了没有对未来进行真正规划的数据库,因此我认为它有点专业工具,但答案似乎是肯定的,它有效。

    【讨论】:

    • 然而 OP 想要对一个已经存在的数据库进行逆向工程,其质量与 OP 的 ORM 无关。
    • 本文描述的是代码优先模型,这正是 OP 所要求的。
    猜你喜欢
    • 2012-03-04
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2020-05-22
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多