培训
模块
使用 EF Core 持久保存和检索关系数据 - Training
本模块指导你完成创建数据访问项目的步骤。 你将使用 Entity Framework Core (EF Core) 连接到关系数据库并构造创建、读取、更新和删除 (CRUD) 查询。
Entity Framework Core (EF Core) 以 NuGet 包的形式提供。 应用程序所需的包取决于:
安装包的常规过程是:
请参阅 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 | NetTopologySuite 和 NetTopologySuite.IO.SqlServerBytes |
对 SQLite 的空间支持 | Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite | NetTopologySuite 和 NetTopologySuite.IO.SpatiaLite |
对 PostgreSQL 的空间支持 | Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite | NetTopologySuite 和 NetTopologySuite.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 |
EF 工具共享的设计时功能实现 | Microsoft.EntityFrameworkCore.Design |
以下包用于测试外部 GitHub 存储库中内置的数据库提供程序。 有关示例,请参阅 efcore.pg 和 Pomelo.EntityFrameworkCore.MySql。 应用程序不应安装这些包。
功能 | Package |
---|---|
测试任何数据库提供程序 | Microsoft.EntityFrameworkCore.Specification.Tests |
测试关系数据库提供程序 | Microsoft.EntityFrameworkCore.Relational.Specification.Tests |
请勿安装以下已过时的包,如果项目中当前安装了这些包,请将其删除:
培训
模块
使用 EF Core 持久保存和检索关系数据 - Training
本模块指导你完成创建数据访问项目的步骤。 你将使用 Entity Framework Core (EF Core) 连接到关系数据库并构造创建、读取、更新和删除 (CRUD) 查询。