首先,扫盲一下背景知识:
然后,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版本,下载并安装这两个货:
(重点一:这里可以回到NuGet里安装,不再选择最新版,选择3.2.7版本就好。)
然后扩展插件里,再次安装EntityFramework6.Npgsql (要关闭自动升级),相应版本为3.1.1。
(重点二:以上3个安装的工具/插件,有版本配套要求,详见Cannot use EF6 Entity Data Model wizard #1775)
--------------------------------------------------------------我是昏割线--------------------------------------------------------------------------
终于迎来了见证奇迹的时候
连库试一把看看,可以啦。
新建ADO.NET Entity Data Model也能出来啦:
LINQ一把看看:
完美完美!
--------------------------------------------------------------我是昏割线--------------------------------------------------------------------------
本来故事到这里就结束了,万万没想到,重点学(co)习(py)的一篇博文里。。。。
汗颜,我遇到的问题,这里都说到了,我还到处翻,可翻了我老半天。。。。
EntityFramework6(EF6)连接Postgresql数据库问题总结
彩蛋
这里还有一些开源的ORM框架,有空的时候去扒一扒看看。
于2009年发布、2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大、最活跃、最完善的国产ORM。
初期开发过程参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。
这是一套使用C#开发的ORM框架,对象基于版本控制,集成事务、缓存、同步与锁。作者力图在简单、实用、可扩展和分布式中寻求合适的平衡,
它并不仅仅是ORM,而是一整套基础架构的思想,在简洁直白中传达架构思维的艺术。
这么长,看完点个赞。