首先,掃盲一下背景知識:
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版本,下載並安裝這兩個貨:
(重點一:這里可以回到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,而是一整套基礎架構的思想,在簡潔直白中傳達架構思維的藝術。
這么長,看完點個贊。