EF Core NuGet 包

Entity Framework Core (EF Core) 以 NuGet 包的形式提供。 应用程序所需的包取决于:

  • 所使用的数据库系统类型(SQL Server、SQLite 等)
  • 所需的 EF Core 功能

安装包的常规过程是:

请参阅 Entity Framework Core 入门教程,获取 EF Core 入门方面的帮助。

包版本

请务必安装 Microsoft 提供的所有 EF Core 包的同一版本。 例如,如果安装了 5.0.3 版本的 Microsoft.EntityFrameworkCore.SqlServer,则所有其他 Microsoft.EntityFrameworkCore.* 包也必须为 5.0.3 版本。

此外,请确保所有外部包都与所使用的 EF Core 的版本兼容。 特别是,检查外部数据库提供程序是否支持你所使用的 EF Core 版本。 EF Core 的新主版本通常需要更新的数据库提供程序。

警告

NuGet 不强制使用一致的包版本。 请始终仔细检查你在 .csproj 文件或等效文件中引用的包版本。

数据库提供程序

EF Core 通过使用“数据库提供程序”支持不同的数据库系统。 每个系统都有自己的数据库提供程序,而提供程序以 NuGet 包的形式提供。 应用程序应安装其中一个或多个提供程序包。

下表列出了常见的数据库提供程序。 有关可用提供程序的更全面列表,请参阅数据库提供程序

数据库系统 Package
SQL Server 和 SQL Azure Microsoft.EntityFrameworkCore.SqlServer
SQLite Microsoft.EntityFrameworkCore.Sqlite
Azure Cosmos DB Microsoft.EntityFrameworkCore.Cosmos
postgresql Npgsql.EntityFrameworkCore.PostgreSQL*
MySQL Pomelo.EntityFrameworkCore.MySql*
EF Core 内存中数据库** Microsoft.EntityFrameworkCore.InMemory

*这些是由社区开发和提供的热门高质量开源提供程序。 列出的其他提供程序由 Microsoft 提供。

**仔细考虑是否使用内存中提供程序。 它不是为生产用途而设计的,也可能不是用于测试的最佳解决方案

工具

使用用于 EF Core 迁移现有数据库中的反向工程(基架)的工具需要安装相应的工具包:

请参阅 Entity Framework Core 工具参考,详细了解如何使用 EF Core 工具,包括如何在项目中或在全局范围内正确安装 dotnet-ef 工具。

提示

默认情况下,Microsoft.EntityFrameworkCore.Design 包的安装方式有所不同,它不会随应用程序一起部署。 这也意味着,其类型不能在其他项目中传递使用。 如果需要访问此包中的类型,请在 .csproj 文件或等效文件中使用常规 PackageReference。 有关详细信息,请参阅设计时服务

扩展包

Microsoft 和第三方以 NuGet 包的形式发布了许多 EF Core 扩展。 常用包包括:

功能 程序包 附加依赖项
用于延迟加载和更改跟踪的代理 Microsoft.EntityFrameworkCore.Proxies Castle.Core
对 SQL Server 的空间支持 Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite NetTopologySuiteNetTopologySuite.IO.SqlServerBytes
对 SQLite 的空间支持 Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite NetTopologySuiteNetTopologySuite.IO.SpatiaLite
对 PostgreSQL 的空间支持 Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite NetTopologySuiteNetTopologySuite.IO.PostGIS(通过 Npgsql.NetTopologySuite
对 MySQL 的空间支持 Pomelo.EntityFrameworkCore.MySql.NetTopologySuite NetTopologySuite

其他包

其他 EF Core 包作为数据库提供程序包的依赖项进行拉取。 但是,建议为这些包添加显式包引用,这样 NuGet 在发布新版本时会提供通知。

功能 程序包
EF Core 基本功能 Microsoft.EntityFrameworkCore
通用关系数据库功能 Microsoft.EntityFrameworkCore.Relational
用于 EF Core 特性等的轻型包。 Microsoft.EntityFrameworkCore.Abstractions
EF Core 使用情况的 Roslyn 代码分析器 Microsoft.EntityFrameworkCore.Analyzers
没有原生 SQLite 依赖项的 EF Core SQLite 提供程序 Microsoft.EntityFrameworkCore.Sqlite.Core

用于数据库提供程序测试的包

以下包用于测试外部 GitHub 存储库中内置的数据库提供程序。 有关示例,请参阅 efcore.pgPomelo.EntityFrameworkCore.MySql。 应用程序不应安装这些包。

功能 Package
测试任何数据库提供程序 Microsoft.EntityFrameworkCore.Specification.Tests
测试关系数据库提供程序 Microsoft.EntityFrameworkCore.Relational.Specification.Tests

已过时的包

请勿安装以下已过时的包,如果项目中当前安装了这些包,请将其删除

  • Microsoft.EntityFrameworkCore.Relational.Design
  • Microsoft.EntityFrameworkCore.Tools.DotNet
  • Microsoft.EntityFrameworkCore.SqlServer.Design
  • Microsoft.EntityFrameworkCore.Sqlite.Design
  • Microsoft.EntityFrameworkCore.Relational.Design.Specification.Tests