資料庫提供者

Entity Framework Core 能夠透過稱為資料庫提供者的外掛程式程式庫存取各種不同的資料庫。

目前的提供者

重要

EF Core 提供者是透過各種來源所建置。 並非所有提供者都會維護為 Microsoft Entity Framework Core 專案的一部分。 考慮使用提供者時,請務必評估品質、授權、支援等項目,以確保其符合您的需求。 同時也務必檢閱每個提供者的文件以了解詳細的版本相容性資訊。

重要

EF Core 提供者通常無法跨主要版本運作。 例如,針對 EF Core 6 發行的提供者將無法與 EF Core 7 搭配運作。

NuGet 封裝 支援的資料庫引擎 維護程式/廠商 注意/需求 針對 EF Core 實用連結
Microsoft.EntityFrameworkCore.SqlServer Azure SQL 和 SQL Server 2012 及更新版本 EF Core 專案 (Microsoft) 6、7 docs
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 及更新版本 EF Core 專案 (Microsoft) 6、7 docs
Microsoft.EntityFrameworkCore.InMemory EF Core 記憶體內部資料庫 EF Core 專案 (Microsoft) 限制 6、7 docs
Microsoft.EntityFrameworkCore.Cosmos Azure Cosmos DB SQL API EF Core 專案 (Microsoft) 6、7 docs
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Npgsql 開發小組 6、7 docs
Pomelo.EntityFrameworkCore.MySql MySQL、MariaDB Pomelo Foundation 專案 6、7 讀我檔案
MySql.EntityFrameworkCore MySQL MySQL 專案 (Oracle) 6、7 docs
Oracle.EntityFrameworkCore Oracle DB 11.2 與更新版本 Oracle 6 網站
Devart.Data.MySql.EFCore MySQL 5 及更新版本 DevArt 已支付 6 docs
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 與更新版本 DevArt 已支付 6 docs
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 及更新版本 DevArt 已支付 6 docs
Devart.Data.SQLite.EFCore SQLite 3 及更新版本 DevArt 已支付 6 docs
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 及更新版本 Jiří Činčura 6 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 檔案 Bubi 6 讀我檔案
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 讀我檔案
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

若您使用相依性插入容器,請在安裝完成後以 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 的修補程式版本新增為應用程式的直接相依性。