免责声明:我是一名初级开发人员,仍在尝试了解 EF6。
我们的团队有一个 .NET Framework 4.7 / Entity Framework 6 项目,其数据依赖于 MS SQL Server。我们刚刚升级到 Visual Studio 2022,但似乎某些推荐的工具不适用于 VS2022。我们首先使用数据库进行 EF。
最近,我们的团队决定添加创建一个新的 PostgreSQL 数据库,我们需要在现有项目中添加对其的支持。
我已经安装了以下软件包:
我还被建议安装以下 VS 扩展:
但是好像只兼容到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 连接字符串。
有什么建议吗?或者我可以使用哪些资源来帮助我?预先感谢。
我按照您提供的上述步骤进行操作,但对我来说 PostgreSQL 没有出现在数据源选项中。 你能帮忙吗?