ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

使用Npgsql实现Linq To PostgreSQL

2020-08-07 17:32:23  阅读:345  来源: 互联网

标签:插件 PostgreSQL LINQ Entity Npgsql ORM Linq


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

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

 

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

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

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

    

 

新建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,而是一整套基础架构的思想,在简洁直白中传达架构思维的艺术。

 

这么长,看完点个赞。

标签:插件,PostgreSQL,LINQ,Entity,Npgsql,ORM,Linq
来源: https://www.cnblogs.com/soulxj/p/13453601.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有