前言
由于项目需要,使用到了PGSql数据库,说实话这是第一次接触并且听说PGSql(PostgreSQL)关系型数据库,之前一直使用的都是SqlServer,一头雾水的各种找资源,终于将PGSql与C#的EF连接起来,可以像使用SQLServer一样使用PGSql了。
PGSql目前有一个pgAdmin4的管理工具,下载之后就可以直接访问我们的数据库了。PGAdmin4下载
1.为了演示方便,我们新建一个控制台程序,同时新建一个Entity的类库,后续添加实体模型使用。
![项目大体框架 项目大体框架](https://i-blog.csdnimg.cn/blog_migrate/aa358f79123ec0dea77e0c19387ca375.webp?x-image-process=image/format,png)
2.我们点击工具-->>扩展和更新 -->> 安装PGSql所使用的扩展工具 NPGSql PostgreSql Integration扩展工具。
![](https://i-blog.csdnimg.cn/blog_migrate/052505d7c76c0b769bbe15c00f03229f.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/43ec1b349d83a260b5b67aec9f903c8f.webp?x-image-process=image/format,png)
3.安装完成之后,我们就可以测试连接我们的pgSql数据库了。在工具-->>连接到数据库 我们在数据源 一行 点击更改按钮,就可以看到我们刚刚安装的PGsql扩展工具了。
![更改数据源为PGSql](https://i-blog.csdnimg.cn/blog_migrate/14360884214d2021df40f3ce01818ec4.webp?x-image-process=image/format,png)
4.在操作界面 输入本地主机,和对应的数据库名称,以及 用户名和密码。点击测试连接,可以看到此处已经连接成功了。
![连接PGSql数据库](https://i-blog.csdnimg.cn/blog_migrate/04ebf12fd5f9bce9f1101d88ea1956c1.webp?x-image-process=image/format,png)
5.接着我们要在我们项目的Entity类库中添加以下两个引用 npgsql 和EntityFramework6.Npgsql。
具体的添加方法-- 右键项目--管理NuGet包-- 输入名称 下载即可。
在项目中添加相应的实体模型
![添加引用和实体框架](https://i-blog.csdnimg.cn/blog_migrate/355af50044e48406b5e911e580b22f17.webp?x-image-process=image/format,png)
添加完成之后,我们还要做一步操作就是在app.config 中添加如下黑色的配置信息
1 <entityFramework> 2 3 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 4 5 <parameters> 6 7 <parameter value="mssqllocaldb" /> 8 9 </parameters> 10 11 </defaultConnectionFactory> 12 13 <providers> 14 15 <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 16 17 <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" /> 18 19 </providers> 20 21 </entityFramework> 22 23 <system.data> 24 25 <DbProviderFactories> 26 27 <add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" /> 28 29 </DbProviderFactories> 30 31 </system.data>
注意:若在实体信息添加那一步 即将选择表或视图时闪退,请确保你的项目中EntityFramework的版本是否低于或者高于EntityFramework6.Npgsql所要求的版本,否则会直接闪退掉的。我们只需要更改下对应的版本即可。
![](https://i-blog.csdnimg.cn/blog_migrate/5e9a7a4693a1671d4e483c04ebe8f39a.webp?x-image-process=image/format,png)
最后,我们就可以在项目中使用EF实体对象来访问PGSql了。
由于我也是第一次使用到PGsql数据库,目前也是个新手小白,遇到不明白的问题也会通过各种资源去解决,希望可以帮助到同样第一次或者以后可能接触到PGSql的朋友。