如何将 PostgreSQL 添加到现有 Entity Framework 6 项目,同时保持现有 SQL Server 提供程序不变?

问题描述 投票:0回答:1

免责声明:我是一名初级开发人员,仍在尝试了解 EF6。

我们的团队有一个 .NET Framework 4.7 / Entity Framework 6 项目,其数据依赖于 MS SQL Server。我们刚刚升级到 Visual Studio 2022,但似乎某些推荐的工具不适用于 VS2022。我们首先使用数据库进行 EF。

最近,我们的团队决定添加创建一个新的 PostgreSQL 数据库,我们需要在现有项目中添加对其的支持。

我已经安装了以下软件包:

  • Npgsql
  • EntityFramework6.Npgsql

我还被建议安装以下 VS 扩展:

  • Npgsql PostgreSQL 集成

但是好像只兼容到VS2019,已经废弃了。

为了测试我是否可以使用推荐的 VS 扩展进行设置,我使用了 Visual Studio 2019 而不是 2022。

安装上面列出的项目后,我的 web.config 文件现在具有此实体框架配置:

<entityFramework>
    <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, EntityFramework6.Npgsql" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
    </providers>
  </entityFramework>

还有这个system.data配置:

  <system.data>
    <DbProviderFactories>
      <remove invariant="Npgsql" />
      <add name="Npgsql Provider" invariant="Npgsql" description=".NET Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=4.1.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
    </DbProviderFactories>
  </system.data>

此时,我尝试创建一个新的

ADO.NET Entity Data Model
,我能够选择我想要的表和过程。

这就是我陷入困境的地方。

新的连接字符串已添加到我的 web.config 中,旁边还有我们已经用于 SQL Server 的加密连接字符串。测试时,它抛出一个异常,说我不能在加密的连接字符串旁边有未加密的连接字符串。

我尝试将连接字符串放在代码中,但在解析连接字符串时它会抛出错误,说它无法识别参数。我使用了自动生成的连接字符串中的相同参数。

因此,它似乎正在使用 SQL Server 提供程序而不是 PostgreSQL 提供程序读取 Postgres 连接字符串。

有什么建议吗?或者我可以使用哪些资源来帮助我?预先感谢。

c# postgresql entity-framework npgsql
1个回答
0
投票

我按照您提供的上述步骤进行操作,但对我来说 PostgreSQL 没有出现在数据源选项中。 你能帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.