准备工作:postgresql 9.2版本;vs2017专业版。
安装步骤:
1.进入vs2017,新建一个项目,在此选择了窗体应用程序,.net framework环境选择4.5版本。
2.下载Npgsql PostgreSQL Interaction插件并安装,在此选择安装4.0.9版本,推荐使用github(地址:https://github.com/npgsql/npgsql/releases)手动选择版本下载。
这个地方踩过两个大坑,导致连接数据库时一直报错“Npgsql.TypeMapping.GlobalTypeMapper的类型初始值设定项引发异常”’:
(1)当时是在vs的“拓展和更新 -> 联机”中下载的Npgsql PostgreSQL Interaction插件,默认是下载最新版4.1.1,但这个版本现在有bug,在连接数据库时会报错,经过苦苦搜索英文资料才爬出这个坑。
(2)在自己计算机中,控制面板 -> 卸载程序,找一下有没有安装了叫做“Npgsql”的程序,若是有,请卸载,否则会报错。
安装之后,在菜单栏工具下的扩展与更新下即可查看。
3.现在可以连接pg数据库了,打开菜单栏工具下的“连接到数据库”,选择postgresql(若是不安装上面的插件,则在此不显示postgresql),输入所要连接的数据库名和信息,完成数据库连接:
4.下面开始为创建实体模型做准备,均使用Nuget安装:
Npgsql程序包4.0.9版本;
EntityFramework6.Npgsql 3.2.1.1版本或者3.1.1版本(后面还得需要升级 EntityFramework版本)。
安装步骤如图,当然也可采用Nuget的控制台界面进行命令行安装,本文采用界面化安装。
可以查看已安装程序包的版本和依赖项。
将以上两个程序包安装完成之后,在项目的引用中,即可看到有一下引用。
鉴于本次安装的经验, 前面的EntityFramework6.Npgsql 版本是3.1.1的话,后续创建实体模型时会提示“尝试安装EntityFramework6的6.2.0版本”,所在在此可以升级以下EntityFramework6的版本。
5.接下来开始创建实体数据模型,选择项目右击添加 -> 新建项,然后选择数据栏里的ADO.NET实体数据模型:
选择来自数据库的EF设计器,进行如下操作:
点击确定
生成模型:
6.需要在App.config文件里面添加如下代码:
如下代码:
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql" />
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" support="FF" />
</DbProviderFactories>
</system.data>
生成实体模型后,也会在app.config里面生成以下连接信息
。
至此,C# EF6框架连接postgresql数据库完成。
本文参考链接并予以感谢:
https://blog.csdn.net/danger_z/article/details/80466350
https://www.bbsmax.com/A/q4zVRbgGzK/