資料庫提供者
Entity Framework Core 能夠透過稱為資料庫提供者的外掛程式程式庫存取各種不同的資料庫。
目前的提供者
重要
EF Core 提供者是透過各種來源所建置。 並非所有提供者都會維護為Microsoft Entity Framework Core 專案的一部分。 考慮使用提供者時,請務必評估品質、授權、支援等項目,以確保其符合您的需求。 同時也務必檢閱每個提供者的文件以了解詳細的版本相容性資訊。
重要
EF Core 提供者通常無法跨主要版本運作。 例如,EF Core 7 發行的提供者將無法與 EF Core 8 搭配運作。
NuGet 封裝 |
支援的資料庫引擎 |
維護程式/廠商 |
注意/需求 |
針對EF Core |
實用的連結 |
Microsoft.EntityFrameworkCore.SqlServer |
Azure SQL 和 SQL Server 2012 及更新版本 |
EF Core 專案 (Microsoft) |
|
6, 7, 8 |
docs |
Microsoft.EntityFrameworkCore.Sqlite |
SQLite 3.7 及更新版本 |
EF Core 專案 (Microsoft) |
|
6, 7, 8 |
docs |
Microsoft.EntityFrameworkCore.InMemory |
EF Core 記憶體內部資料庫 |
EF Core 專案 (Microsoft) |
限制 |
6, 7, 8 |
docs |
Microsoft.EntityFrameworkCore.Cosmos |
Azure Cosmos DB SQL API |
EF Core 專案 (Microsoft) |
|
6, 7, 8 |
docs |
Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
Npgsql 開發小組 |
|
6, 7, 8 |
docs |
Pomelo.EntityFrameworkCore.MySql |
MySQL、MariaDB |
Pomelo Foundation 專案 |
|
6, 7, 8 |
讀我檔案 |
MySql.EntityFrameworkCore |
MySQL |
MySQL 專案 (Oracle) |
|
6, 7 |
docs |
Oracle.EntityFrameworkCore |
Oracle DB 11.2 與更新版本 |
Oracle |
|
6, 7 |
網站 |
MongoDB.EntityFrameworkCore |
MongoDB |
MongoDB |
|
8 |
docs |
Devart.Data.MySql.EFCore |
MySQL 5 及更新版本 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Oracle.EFCore |
Oracle DB 9.2.0.4 與更新版本 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.PostgreSql.EFCore |
PostgreSQL 8.0 及更新版本 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.SQLite.EFCore |
SQLite 3 及更新版本 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.DB2.EFCore |
DB2 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Bigcommerce.EFCore |
BigCommerce |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Dynamics.EFCore |
Microsoft Dynamics 365 |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.FreshBooks.EFCore |
FreshBooks |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Magento.EFCore |
Magento |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.MailChimp.EFCore |
Mailchimp |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.QuickBooks.EFCore |
QuickBooks |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Salesforce.EFCore |
Salesforce |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.ExactTarget.EFCore |
Salesforce MC (ExactTarget) |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Sugar.EFCore |
SugarCRM |
DevArt |
已支付 |
6, 7, 8 |
docs |
Devart.Data.Zoho.EFCore |
Zoho CRM |
DevArt |
已支付 |
6, 7, 8 |
docs |
MASES。EntityFrameworkCore.KNet |
Apache Kafka |
MASES 群組 |
試用版、訂用帳戶 |
6, 7, 8 |
docs |
InterBase |
InterBase |
InterBase |
|
6 |
docs |
FirebirdSql.EntityFrameworkCore.Firebird |
Firebird 3.0 及更新版本 |
Jiří Činčura |
|
8 |
docs |
IBM.EntityFrameworkCore |
Db2、Informix |
IBM |
付費,Windows |
6 |
使用者入門 |
IBM.EntityFrameworkCore-lnx |
Db2、Informix |
IBM |
付費,Linux |
6 |
使用者入門 |
IBM.EntityFrameworkCore-osx |
Db2、Informix |
IBM |
付費,macOS |
6 |
使用者入門 |
EntityFrameworkCore.Jet |
Microsoft Access 檔案 |
CirrusRedOrg |
Windows |
6, 7, 8 (預覽) |
讀我檔案 |
Google.Cloud.EntityFrameworkCore.Spanner |
Google Cloud Spanner |
Cloud Spanner 生態系統 |
目前處於預覽狀態 |
6 |
教學課程 |
Teradata.EntityFrameworkCore |
Teradata 資料庫 16.10 及更新版本 |
Teradata |
|
3 |
網站 |
FileContextCore |
將資料儲存在檔案中 |
Morris Janatzek |
適合用於開發 |
3 |
讀我檔案 |
FileBaseContext |
將數據表儲存在檔案中 |
k.D.g |
適合用於開發 |
7、8 |
讀我檔案 |
EntityFrameworkCore.SqlServerCompact35 |
SQL Server Compact 3.5 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
wiki |
EntityFrameworkCore.SqlServerCompact40 |
SQL Server Compact 4.0 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
wiki |
EntityFrameworkCore.OpenEdge |
Progress OpenEdge |
Alex Wiese |
|
2 |
讀我檔案 |
將資料庫提供者新增至應用程式
EF Core 的大多數資料庫提供者會以 NuGet 套件形式發佈,可以安裝如下:
dotnet add package provider_package_name
install-package provider_package_name
若您使用相依性插入容器,請在安裝完成後以 OnConfiguring
方式或 AddDbContext
方式在 DbContext
中設定提供者。
例如,下列程式行會以傳遞的連接字串設定 SQL Server 提供者:
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
資料庫提供者能夠延伸 EF Core,來啟用特定資料庫套有的功能。 有些概念通用於大多數資料庫,並且包含在主要 EF Core 元件中。 這類概念包含以 LINQ 表示查詢、異動,以及在從資料庫載入物件之後追蹤其變更。
有些概念是特定提供者所特有。 例如,SQL Server 提供者可讓您設定記憶體最佳化資料表 (SQL Server 特有的功能)。 其他概念是提供者類別特有的。
例如,關係資料庫的 EF Core 提供者建置在通用 Microsoft.EntityFrameworkCore.Relational
連結庫上,其提供用來設定數據表和數據行對應、外鍵條件約束等的 API。提供者通常會以 NuGet 套件的形式散發。
重要
當 EF Core 的新修補程式版本發行時,通常會包含 Microsoft.EntityFrameworkCore.Relational
套件的更新。
當您新增關聯式資料庫提供者時,此套件會成為應用程式的可轉移相依性。
但是,因為許多提供者皆從 EF Core 獨立發行,所以可能不會更新為相依於該套件的較新修補程式版本。
為了確保您能夠修正所有 Bug,建議您將 Microsoft.EntityFrameworkCore.Relational
的修補程式版本新增為應用程式的直接相依性。