001从零开始入门Entity Framework Core——基础知识
阅读原文时间:2023年07月10日阅读:1

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。

一、什么是 Entity Framework Core 模型?

1、对于 EF Core,使用模型执行数据访问。 模型实体类和表示数据库会话的上下文对象构成。 上下文对象允许查询并保存数据。

2、EF 支持以下模型开发方法:

  • 从现有数据库生成模型。
  • 对模型手动编码,使其符合数据库。
  • 创建模型后,使用 EF 迁移从模型创建数据库。 模型发生变化时,迁移可让数据库不断演进。

二、安装 Entity Framework Core

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

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

2、安装包的常规过程是:

  • 确定数据库提供程序并安装相应的包
  • 如果使用关系数据库提供程序,还需安装 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.Relational。 这有助于确保使用一致的版本,同时也意味着 NuGet 会在新的包版本发布时通知你。
  • 或者确定所需的工具类型,并为此安装相应的包

3、总言之,要将 EF Core 添加到应用程序,请安装适用于要使用的数据库提供程序的 NuGet 包。

4、注意事项:

  • 如果要生成 ASP.NET Core 应用程序,不需要安装内存中和 SQL Server 提供程序。 这些提供程序随 EF Core 运行时一起包含在当前版本的 ASP.NET Core 中。
  • 要安装或更新 NuGet 包,可以使用 .NET Core 命令行界面 (CLI)、Visual Studio 包管理器对话框或 Visual Studio 包管理器控制台。
  • 用于 EF Core 的第三方提供程序通常不随 EF Core 运行发布修补程序版本。 若要将使用第三方提供程序的应用程序升级到 EF Core 的修补程序版本,可能需要添加对单独的 EF Core 运行时组件(如 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.Relational)的直接引用。
  • 请务必安装 Microsoft 提供的所有 EF Core 包的同一版本。 例如,如果安装了 5.0.3 版本的 Microsoft.EntityFrameworkCore.SqlServer,则所有其他 Microsoft.EntityFrameworkCore.* 包也必须为 5.0.3 版本。
  • 此外,请确保所有外部包都与所使用的 EF Core 的版本兼容。 特别是,检查外部数据库提供程序是否支持你所使用的 EF Core 版本。 EF Core 的新主版本通常需要更新的数据库提供程序。

三、数据库提供程序

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

2、下表列出了常见的数据库提供程序。

数据库系统

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 和第三方以 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 Core 版本和计划

Release

目标 Framework

支持截止时间

EF Core 6.0

.NET 6

2024 年 11 月 8 日 (LTS)

EF Core 5.0

.NET Standard 2.1

2022 年 5 月 10 日过期

EF Core 3.1

.NET Standard 2.0

2022 年 12 月 3 日 (LTS)

EF Core 3.0

.NET Standard 2.1

2020 年 3 月 3 日过期

EF Core 2.2

.NET Standard 2.0

过期时间:2019 年 12 月 23 日

EF Core 2.1

.NET Standard 2.0

过期时间:2021 年 8 月 21 日*

EF Core 2.0

.NET Standard 2.0

过期时间:2018 年 10 月 1 日

EF Core 1.1

.NET Standard 1.3

过期时间:2019 年 6 月 27 日

EF Core 1.0

.NET Standard 1.3

过期时间:2019 年 6 月 27 日

七、EF Core 支持的 .NET 实现

下表提供了每个 .NET 实现的指南:

EF Core

3.1

5.0

6.0

.NET & .NET Core

3.1

5.0

6.0

.NET Standard

2.0

2.1

 

.NET Framework

4.7.2

 

 

Mono

5.4

6.4

 

Xamarin.iOS

10.14

12.16

(使用 .NET 6)

Xamarin.Mac

3.8

5.16

(使用 .NET 6)

Xamarin.Android

8.0

10.0

(使用 .NET 6)

UWP

10.0.16299

 

(使用Windows 应用 SDK)

Unity

2018 年 1 月

2021.2

TBD

Tizen

4.0

6.0

(使用 .NET 6)

----------------------------------------------本篇文章到此结束-------------------------------------------