Entity Framework Core 可通过名为数据库提供程序的插件库访问许多不同的数据库。
当前提供程序
重要
EF Core 提供程序由多种源生成。 并非所有提供程序均作为 Microsoft Entity Framework Core 项目的组成部分进行维护。 考虑使用提供程序时,请务必评估质量、授权、支持等因素,确保其满足要求。 同时也请务必查看每个提供程序的文档,详细了解版本兼容性信息。
重要
EF Core 提供程序通常不适用于主版本。 例如,为 EF Core 8 发布的提供程序无法运行在 EF Core 9 上。
NuGet 程序包 |
支持的数据库引擎 |
维护商/供应商 |
备注/要求 |
针对 EF Core |
有用的链接 |
Microsoft.EntityFrameworkCore.SqlServer |
Azure SQL、SQL Server 2012 及更高版本、Azure Synapse Analytics |
EF Core 项目 (Microsoft) |
|
8, 9 |
文档 |
Microsoft.EntityFrameworkCore.Sqlite |
SQLite 3.46.1 及更高版本 |
EF Core 项目 (Microsoft) |
|
8, 9 |
文档 |
Microsoft.EntityFrameworkCore.InMemory |
EF Core 内存中数据库 |
EF Core 项目 (Microsoft) |
限制 |
8, 9 |
文档 |
Microsoft.EntityFrameworkCore.Cosmos |
Azure Cosmos DB SQL API |
EF Core 项目 (Microsoft) |
|
8, 9 |
文档 |
Npgsql.EntityFrameworkCore.PostgreSQL |
postgresql |
Npgsql 开发团队 |
|
8, 9 |
文档 |
Pomelo.EntityFrameworkCore.MySql |
MySQL、MariaDB |
Pomelo Foundation 项目 |
|
8, 9 |
自述文件 |
MySql.EntityFrameworkCore |
MySQL |
MySQL 项目 (Oracle) |
|
8, 9 |
文档 |
Oracle.EntityFrameworkCore |
Oracle DB 11.2 及更高版本 |
甲骨文 |
|
8, 9 |
网站 |
MongoDB.EntityFrameworkCore |
MongoDB |
MongoDB |
|
8 |
文档 |
Couchbase.EntityFrameworkCore |
Couchbase公司 |
Couchbase |
|
8, 9 |
文档 |
Devart.Data.MySql.EFCore |
MySQL 5 及以上版本 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Oracle.EFCore |
Oracle DB 9.2.0.4 及更高版本 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.PostgreSql.EFCore |
PostgreSQL 8.0 及以上版本 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.SQLite.EFCore |
SQLite 3 及以上版本 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.DB2.EFCore |
DB2 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Bigcommerce.EFCore |
BigCommerce |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Dynamics.EFCore |
Microsoft Dynamics 365 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.FreshBooks.EFCore |
FreshBooks |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Magento.EFCore |
Magento |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.MailChimp.EFCore |
Mailchimp |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.QuickBooks.EFCore |
QuickBooks |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Salesforce.EFCore |
Salesforce |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.ExactTarget.EFCore |
Salesforce MC (ExactTarget) |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Sugar.EFCore |
SugarCRM |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.Zoho.EFCore |
Zoho CRM |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.ZohoBooks.EFCore |
佐霍书 |
DevArt |
已付 |
8, 9 |
文档 |
Devart.Data.ZohoDesk.EFCore |
Zoho客服系统 |
DevArt |
已付 |
8, 9 |
文档 |
MASES.EntityFrameworkCore.KNet |
Apache Kafka |
MASES 组 |
试用版、订阅 |
8 |
文档 |
InterBase |
InterBase |
InterBase |
|
8 |
文档 |
FirebirdSql.EntityFrameworkCore.Firebird |
Firebird 3.0 及以上版本 |
Jií Činčura |
|
8 |
文档 |
IBM.EntityFrameworkCore |
Db2、Informix |
IBM |
付费,Windows |
8 |
入门 |
IBM.EntityFrameworkCore-lnx |
Db2、Informix |
IBM |
付费,Linux |
8 |
入门 |
IBM.EntityFrameworkCore-osx |
Db2、Informix |
IBM |
付费,macOS |
8 |
入门 |
EntityFrameworkCore.Jet |
Microsoft Access 文件 |
CirrusRedOrg |
Windows操作系统 |
8, 9 |
自述文件 |
Google.Cloud.EntityFrameworkCore.Spanner |
Google Cloud Spanner |
Cloud Spanner 生态系统 |
|
8 |
教程 |
Teradata.EntityFrameworkCore |
Teradata 数据库 16.10 及更高版本 |
Teradata |
|
3 |
网站 |
FileContextCore |
在文件中存储数据 |
莫里斯·贾纳泽克 |
用于开发 |
3 |
自述文件 |
FileBaseContext |
将表存储在文件中 |
k.D.g |
用于开发 |
8, 9 |
自述文件 |
EntityFrameworkCore.SqlServerCompact35 |
SQL Server Compact 3.5 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
维基 |
EntityFrameworkCore.SqlServerCompact40 |
SQL Server Compact 4.0 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
维基 |
EntityFrameworkCore.OpenEdge |
Progress OpenEdge |
Alex Wiese |
|
2 |
自述文件 |
向应用程序添加数据库提供程序
EF Core 的大多数数据库提供程序都是作为 NuGet 包分发的,可按如下所示安装:
dotnet add package provider_package_name
install-package provider_package_name
安装后,需采用 DbContext
方法或 OnConfiguring
方法(如果使用的是依赖关系注入容器)在 AddDbContext
中配置提供程序。
例如,以下行使用传递的连接字符串配置 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
补丁版本添加为应用程序的直接依赖项。