EF Core 数据库 Provider 一览
當 EF Core 1.x 系列和 2.0 版本之間經過重大的重寫時,所有 EF Core 數據庫 Provider 都受到重創。從那時起,各種私人和商業開發團隊一直在努力填補這個空白。
正文
當 EF Core 1.x 系列和 2.0 版本之間經過重大的重寫時,所有 EF Core 數據庫 Provider 都受到重創。從那時起,各種私人和商業開發團隊一直在努力填補這個空白。
在本文中,我們只關注生產就緒的 EF Core 數據庫 Provider。那些仍處于預覽或預發布狀態的 Provider 將在以后的文章中介紹。
SQL Server
SQL Server 自然是由微軟提供的,不過限制是僅適用于 SQL Server 2008 及更高版本。
對于 SQL Server 2000 和 2005,你可以使用原始的 Entity Framework。不過,這些版本不再受支持,所以不應繼續在生產環境中使用。
PostgreSQL
在.NET 中訪問 PostgreSQL 的事實標準是Npgsql 驅動程序和 EF Core 數據庫 Provider,不過它們并不是唯一的選擇。
Devart 為 PostgreSQL 提供了一個叫作dotConnect的商業版 Provider。這項產品的宣傳語如下所示:
用于 PostgreSQL 的 dotConnect 提供了與 PostgreSQL 數據庫的高性能連接以及很多創新的開發工具和技術。它支持 PostgreSQL 的大量特定功能,例如 SSL 連接、PostgreSQL 通知、PostgreSQL 批量數據加載、GEOMETRY、PostgreSQL ARRAY 類型,等等。
除了 ADO.NET 驅動程序,“dotConnect 還支持 ADO.NET?Entity Framework、NHibernate 和 LinqConnect(以前是 LINQ to PostgreSQL)”。最后一個是基于微軟的 LINQ to SQL ORM。
SQLite
微軟的 SQLite Provider是基于SQLitePCL的,SQLitePCL 是 SQLite 的一個實現,一個“可移植的類庫”框架。PCL 是.NET 標準的前身和子集。需要注意的是,這與SQLite 官方的.NET 標準驅動程序是相互獨立的。當微軟在實現 SQLite 數據庫 Provider 時,這些官方驅動程序還不可用。
如果你認為微軟的驅動程序還不夠高效,Devart 也提供了一個SQLite 驅動程序和 EF Provider。
MySQL
一些團隊提供了 MySQL 數據 Provider,首當其沖的是Oracle 提供的官方 MySQL Provider。
它的問題是底層的 MySQL 數據庫驅動程序聲譽不好。雖然是開源的,但它采用的是 GPLv2 許可,GPLv2 是一個相當嚴格的許可,在.NET 社區中并不常見。但真正的問題是 Oracle 的 MySQL 驅動程序不支持異步調用。根據 MySqlConnector 團隊透露,它只是使用了其他線程來執行同步 I/O。
因此,這個團隊從頭開始創建MySqlConnector。它是異步的,并采用了 MIT 許可。Pomelo Foundation 的 EF Core MySQL 數據庫 Provider就是基于 MySqlConnector 構建的。
同樣,Devart 提供了 MySQL 數據庫驅動程序和 EF Core Provider。它們的獨特功能包括“特定于 MySQL 的功能,如 SSL 和 SSH 連接、嵌入式服務器、壓縮協議、HTTP 通道,等等”。
Firebird
Firebird 數據庫在.NET 社區中并沒有得到很多關注,但它已經存在了很長時間。它最初是基于 Borland 的開源版 InterBase,但大部分代碼在過去 19 年中被重寫過。
除了官方提供的 Firebird 數據庫 Provider 外,Rafael Almeida 還提供了EntityFrameworkCore.FirebirdSql,它與 Firebird 2.x 數據庫兼容。
Progress OpenEdge
微軟正在更新 EF Core Provider 列表。Alex Wiese 最近推出的Progress OpenEdge EF Core Provider也才一個月左右。
微軟 Access
對微軟 Access 的支持主要來自一個意大利人(被稱為 bubibubi)。他提供的庫叫作EntityFrameworkCore.Jet,僅適用于.NET?Framework。
之所以有這種限制,是因為 OleDB 不支持.NET?Core,即使是在 Windows 上運行。這可能會在未來發生變化,因為很多 WinForms 和 WPF 應用程序無法在沒有 OleDB 的情況下移植到.NET?Core。除 Access 之外,很多應用程序使用 OleDB 驅動程序來讀取 Excel 文件。
SQL Server Compact
自 2013 年以來,SQL Server Compact 已被棄用,并被 SQLite 取代,但很多應用程序仍然有一些數據保存在 SQL Server Compact 中。如果你是這種情況,可以考慮使用 Erik Ejlskov Jensen 提供的SQL Server Compact EF Core 數據庫 Provider。
由于 SQL Server Compact 及其底層驅動程序的設計,它僅適用于.NET?Framework。
DB2
來自 IBM 的強大但很少被談及的數據庫 DB2,針對 Windows、Linux 和 OSX 平臺都需要單獨的庫。這三個庫都直接由 IBM 提供。
Oracle
Oracle 最初打算在 2017 年末對微軟.NET?Core 托管的 ODP.NET 驅動程序進行認證。該計劃于 2017 年 3 月公布,僅針對.NET?Core 2.0。該計劃于 2018 年 2 月進行了修訂,預計將于 2018 年第 3 季度發布。由于錯過了第二個截止日期,Oracle 尚未公開討論其修訂計劃。
Devart 提供了一個商業版的Oracle 數據庫驅動程序和 EF Core Provider。
原文地址:https://www.infoq.cn/article/Gk2v0dV7i_AC97lNisGY
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的EF Core 数据库 Provider 一览的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker最全教程之使用Tencent
- 下一篇: EFCore+Mysql仓储层建设(分页