使用Npgsql實現面向PostgreSQL的LINQ to Entities(OR Linq To PostgreSQL)


首先,掃盲一下背景知識: 

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。
重點二:以上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,而是一整套基礎架構的思想,在簡潔直白中傳達架構思維的藝術。

 

這么長,看完點個贊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM