首先,掃盲一下背景知識:
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,而是一整套基礎架構的思想,在簡潔直白中傳達架構思維的藝術,
這么長,看完點個贊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/61.html
