001從零開始入門Entity Framework Core——基礎知識

2022-09-08 21:01:48

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)

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