使用Npgsql实现面向PostgreSQL的LINQ to Entities(OR Linq To P
首先,扫盲一下背景知识:?LINQ 和 ADO.NET What is Entity Framework? LINQ to SQL与LINQ to Entities场景之对照(非原创) Entity Framework vs. LINQ to SQL ? 然后,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。 ? --------------------------------------------------------------我是昏割线-------------------------------------------------------------------------- 终于迎来了见证奇迹的时候连库试一把看看,可以啦。 ? ?? ? 新建ADO.NET Entity Data Model也能出来啦: ? ? ? ? LINQ一把看看: ? ? ? ?完美完美! ? ? 本来故事到这里就结束了,万万没想到,重点学(co)习(py)的一篇博文里。。。。? 汗颜,我遇到的问题,这里都说到了,我还到处翻,可翻了我老半天。。。。 ?EntityFramework6(EF6)连接Postgresql数据库问题总结 ? 彩蛋这里还有一些开源的ORM框架,有空的时候去扒一扒看看。 ? Dos.ORM(原Hxj.Data) 于2009年发布、2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大、最活跃、最完善的国产ORM。 初期开发过程参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。 ? Scree - 基于ORM的框架思想与体系 这是一套使用C#开发的ORM框架,对象基于版本控制,集成事务、缓存、同步与锁。作者力图在简单、实用、可扩展和分布式中寻求合适的平衡, 它并不仅仅是ORM,而是一整套基础架构的思想,在简洁直白中传达架构思维的艺术。 ? 这么长,看完点个赞。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |