使用Npgsql实现Linq To PostgreSQL

首先,扫盲一下背景知识: 

LINQ 和 ADO.NET

What is Entity Framework?

 

然后,LINQ to SQL是只支持微软亲儿子SQL Server的。如果我们要连上PostgreSQL,需要第三方插件。

 

第一个纳入视线的是Devart LinqConnect 

可惜他们家的产品里轻量版不支持LINQ,专业版是收费的,

本来还想薅一薅专业版试用期一个月的羊毛,结果官网直接访问不了了,果断弃坑。

 

然后硬着头皮去google了一下,

发现Npgsql(我司老朋友了)是支持EF的

那就试一把:

步骤一:VS扩展插件搜索并安装Npgsql PostgreSQL Interaction最新版。

步骤二:NuGet里搜索并安装EntityFramework6.Npgsql,Npgsql最新版。

 

一试不要紧,又是各种问题,比如安装完成后,还是连库驱动列表里找不到PostgreSQL Database的数据源...

 

咋整,再去网上翻翻看,结果在插件Npgsql PostgreSQL Interaction官方下载页面上,

最新提问就在说Ver4.1.X.X版本的插件有问题。。。

太阳底下没有新鲜事啊。。。(时间戳:2020/08/07)

 

没办法,又去查,直接翻到github上看源码,不,源码我看不懂,看看大家的抱怨吧,

比如这个:Cannot use EF6 Entity Data Model wizard #1775 是跟我同样的问题。

 

看他样子好像用低版本就解决了。那拿个低版本的试试?

继续翻github,找到3.2.7版本,下载并安装这两个货:

Npgsql-3.2.7.msi  (连库基础)
Npgsql.vsix (VS扩展插件即Npgsql PostgreSQL Interaction这个东东)

重点一:这里可以回到NuGet里安装,不再选择最新版,选择3.2.7版本就好。

然后扩展插件里,再次安装EntityFramework6.Npgsql (要关闭自动升级),相应版本为3.1.1。
重点二:以上3个安装的工具/插件,有版本配套要求,详见Cannot use EF6 Entity Data Model wizard #1775

 

--------------------------------------------------------------我是昏割线--------------------------------------------------------------------------

终于迎来了见证奇迹的时候

连库试一把看看,可以啦。

    使用Npgsql实现Linq To PostgreSQL_第1张图片

 

新建ADO.NET Entity Data Model也能出来啦:

     使用Npgsql实现Linq To PostgreSQL_第2张图片

 

LINQ一把看看:

    使用Npgsql实现Linq To PostgreSQL_第3张图片

 

 完美完美!

 
--------------------------------------------------------------我是昏割线--------------------------------------------------------------------------

 

本来故事到这里就结束了,万万没想到,重点学(co)习(py)的一篇博文里。。。。 

汗颜,我遇到的问题,这里都说到了,我还到处翻,可翻了我老半天。。。。

 EntityFramework6(EF6)连接Postgresql数据库问题总结

 

彩蛋

这里还有一些开源的ORM框架,有空的时候去扒一扒看看。

 

Dos.ORM(原Hxj.Data)

于2009年发布、2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大、最活跃、最完善的国产ORM。

初期开发过程参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。

 

Scree - 基于ORM的框架思想与体系

这是一套使用C#开发的ORM框架,对象基于版本控制,集成事务、缓存、同步与锁。作者力图在简单、实用、可扩展和分布式中寻求合适的平衡,

它并不仅仅是ORM,而是一整套基础架构的思想,在简洁直白中传达架构思维的艺术。

 

这么长,看完点个赞。

你可能感兴趣的:(使用Npgsql实现Linq To PostgreSQL)