Entity Framework Core 支持通过不同的数据库提供程序访问许多不同的数据库,随着 .NET Core 的发展和开源社区的增长,提供程序也越来越多,基本满足所有数据库需求。
当前支持的提供程序
NuGet 程序包 |
支持的数据库引擎 |
维护商/供应商 |
备注/要求 |
有用的链接 |
SQL Server 2008 及以上版本 |
EF Core 项目 (Microsoft) |
|
||
SQLite 3.7 及以上版本 |
EF Core 项目 (Microsoft) |
|
||
EF Core 内存中数据库 |
EF Core 项目 (Microsoft) |
仅用于测试 |
||
Azure Cosmos DB SQL API |
EF Core 项目 (Microsoft) |
仅预览版 |
||
postgresql |
|
|||
MySQL、MariaDB |
|
|||
MyCAT 服务器 |
仅预发行版 |
|||
SQL Server Compact 4.0 |
.NET Framework |
|||
SQL Server Compact 3.5 |
.NET Framework |
|||
Firebird 2.5 和 3.x |
|
|||
Firebird 2.5 和 3.x |
|
|||
MySQL |
MySQL 项目 (Oracle) |
|
||
Oracle DB 11.2 及更高版本 |
预发行 |
|||
Db2、Informix |
Windows 版本 |
|||
Db2、Informix |
Linux 版本 |
|||
Db2、Informix |
macOS 版本 |
|||
Microsoft Access 文件 |
.NET Framework |
|||
Progress OpenEdge |
|
|||
Oracle DB 9.2.0.4 及更高版本 |
已付 |
|||
PostgreSQL 8.0 及以上版本 |
已付 |
|||
SQLite 3 及以上版本 |
已付 |
|||
MySQL 5 及以上版本 |
已付 |
未来的提供程序
Cosmos DB
我们一直在为 Cosmos DB 开发 EF Core 提供程序, 这是我们首次推出的基于 NOSQL 的文档的数据库提供程序,通过此次尝试,将为今后发布的EF Core 以及其他非关系提供程序的设计提供可能,这个包可以从 NuGet 库获取预览版。
Oracle 官方提供程序
Oracle 官方团队已发布适用于EF Core 的 Oracle 提供程序的Beta 版, 可通过 NuGet 获取预览版。
向应用程序添加数据库提供程序
EF Core 的大多数数据库提供程序都是作为NuGet 包分发的,可通过控制台或PMC进行安装。
dotnet add package provider_package_name install-package provider_package_name
安装后,需采用 OnConfiguring 方法或AddDbContext 方法(如果使用的是依赖关系注入容器)在DbContext 中配置提供程序。
optionsBuilder.UseSqlServer("connectionString");
很多提供程序针对模型的配置都是通用的,但特定的提供程序提供特定的配置选项。
SQL Server 提供程序支持使用内存优化表功能
SQL Server 内存优化表支持将整个表驻留在内存中,表数据有两个副本,第一个副本在内存中,第二个副本在硬盘上,两者保持同步,防止意外故障后导致的数据丢失,访问数据时,优先使用内存版本,所以性能较高。
modelBuilder.Entity<Blog>().ForSqlServerIsMemoryOptimized();
SQLite 数据库提供程序
此数据库提供程序允许将 Entity Framework Core 与 SQLite 一起使用,该提供程序作为 Entity Framework Core 项目的组成部分进行维护。
In-Memory 数据库提供程序
此数据库提供程序允许将Entity Framework Core 和内存数据库一起使用。 这对测试非常有用,尽管内存中模式下的SQLite 提供程序可能是针对关系数据库的更合适的测试替代,该提供程序作为Entity Framework Core 项目的组成部分进行维护。
编写自己的数据库提供程序
So you want to write an EF Core provider
我们建议使用以下命名规则,这也是微软 EF Core 团队所使用的规则。
<Optional project/company name>.EntityFrameworkCore.<Database engine name>
Microsoft.EntityFrameworkCore.SqlServer Npgsql.EntityFrameworkCore.PostgreSQL EntityFrameworkCore.SqlServerCompact40