跳至內容

EntityFrameworkCore

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 15:45 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

Entity Framework Core是微軟新一代的物件關聯對應 ( ORM ) 框架,以 . NET Core 實作,猶毋過伊是歸屬於 ASP . NET Core 專案的一部份,佇咧 ASP . NET Core 開始當時就錄入去標準功能,佮現行的 Entity Framework 仝款,是微軟官方建議使用的資料存取功能,猶毋過 . NET Core 成功移植 ADO . NET 基礎類別庫 System . Data 了後,開發人員猶是會當使用 ADO . NET 做資料的存取的解決方案。

歷史

二空一四年五月十九,微軟決定為著欲予伊 . NET 會當迒過平台,後一版 Entity Framework 欲完全重寫。二空一六年六月二十七號,發佈矣 Entity Framework Core 一垺零 , 伴隨著 ASP . NET Core 一孵零佮 . NET Core 一垺零 . 本來其號做 Entity Framework 七,但是為著欲突出其實是完全重寫毋是換 EF 六所以重號名。

Entity Framework Core 所有的版本是完全獨立的程式碼媒體櫃,做為 NuGet 包提供。

Entity Framework Core 一板零使用 Apache License v 二在 GitHub 開源。可執行 Windows , Linux 和 OSX。

二空一七年八月十四隨在 Visual Studio 二千空一十七十五孵三和 ASP . NET Core 二鋪空發布 Entity Framework Core 二孵空。

二空一九年九月二十三隨 Visual Studio 二千空一十九十六曲三和 ASP . NET Core 三更空發布 Entity Framework Core 三-c零。

二空一九年十二月初三發布矣 Entity Framework Core 三孵一 ( EF Core 三孵一 ) 並成做長期支援版本至少支援到二空二二年十二月初三。

二空二一年一月十二號發布矣 Entity Framework Core 五曉空 . 二 ( EF Core 五 )。

二空二一年十一月十號發布矣 Entity Framework Core 六板零 ( EF Core 六 )。

核心功能

Entity Framework Core 基本上以 ORM 架構為主,延續 Entity Framework 的做法發展,猶毋過 Entity Framework Core 無閣再支援 Database First 佮 Model First 模式,干焦支援 Code First 模式,亦就算用程式碼來處理 Model 猶閣有資料庫綱要的對應的工課。

Entity Framework Core 一垺零 . 零目前支援下列功能:

  • 資料庫塑模仔 ( Modeling ):使用 POCO 方式來建立 Model 佮其關聯性、影態狀態 ( Shadow State ) 屬性維護、唯一性限制佮索引、內建轉換、模型驗證、鍵值自動產生佮關聯-格對應等。
  • 變更追蹤 ( Change Tracking ):緊照式變閣較追蹤、存取已經追蹤的狀態佮附加已經解除附加的資料項目抑是物件結構 ( graph )。
  • 儲存功能 ( Save Changes ):基本資料的儲存功能、樂觀式鎖定、非同步變更儲存、交易能力佮批次處理。
  • 查詢 ( Query ):基本 LINQ 的支援、混合式主對架構評估、關起來追蹤功能、早期載入、非同步查詢、基本 BCL 函式的轉換佮 SQL 指令的執行。
  • 資料庫綱要管理 ( Database Schema Management ):資料庫建立佮刪除的 API 支援、資料庫錯誤頁面 ( 由 ASP . NET Core 提供 ) 佮關聯性資料庫移轉等等。

目前當咧實作中的有:

  • 資料庫塑模仔 ( Modeling ):資料標記 ( Entity Framework 時代的 Data Annotations ) 佮 TPH 繼承模式。
  • 分工的品質 ( Cross-cutting quality ):檔案、Intellisense 檔案佮 API 檢閱。
  • 效能 ( Performance ):額外的效能崁佮效能增進。
  • 查詢 ( Query ):對關聯屬性的查詢轉換。
  • 資料庫的反向工程 ( 類似 EF 的 Database First )。
  • 穩定化著 Mac 佮 Linux 的功能。
  • 新的資料提供者。

佇一鋪零 . 零內計畫的功能有:

  • 設計時期脈絡 ( context ) 的發現佮載入。
  • 部署能力。
  • 串聯式刪除。
  • 記錄功能。

資料提供者

Entity Framework Core 支援下列的資料提供者:

一 . SQL Server 二 . SQLite 三 . In-Memory ( 記持體內資料庫 ),可供無需要存取著關聯性資料庫的測試工課。 四 . PostgreSQL 五 . SQL Server Compact 六 . IBM 資料庫侍服器七 . MySQL

開發方式

Entity Framework Core 的開發方式佮原本 Entity Framework 無仝的是,Entity Framework Core 無閣再支援以 UI 為主的資料庫組態 ( 這是為著欲適應 Linux 佮 Mac 的開發環境 ),而且無論是何種模式 ( Database First / Code First ),攏是以程式碼為主的環境對應,無閣有 EDMX ( Entity Framework Metadata ) 存在,欲達成這个目標,Entity Framework 提供矣 Scaffold-Database 指令 ( 佇咧 Package Management Console 中執行 ),允准開發人員由資料庫來產生 Model 的程式碼。

彼原本 Entity Framework 現有的資料模型仝步指令 Add-Migration 佮 Update-Database 佇咧 Entity Framework Core 猶原支援,包含伊前述的 Scaffold-Database 指令,攏去予包裝佇 Microsoft . EntityFrameworkCore . Tools 套領內,會當由 Package Management Console 中執行 Install-Package 共安裝,抑是直接編輯 project . json 加入相依套件,然後閣再於著 project . json 加入工具的相關設定:

如果使用 Scaffold-Database 指令探測資料庫的時陣,除了 Model 會自動產生外,會做伙產生嘛會 DbContext 類別的衍生程式,作為連結資料庫的入口,若是由新的資料庫,抑是講無使用 Scaffold-Database 指令的話,就愛家己編寫這个類別。

就會使用 DbContext 來操作資料庫矣,了後的部份就佮 Entity Framework 差無偌濟。 若是 ASP . NET Core,著愛閣到 ASP . NET Core 的起始類別 ( 比如講 Startup . cs ),將 Entity Framework Core 的 DbContext 加甲 Dependency Injection 內底。

了後就會當由 Controller 取得這个 DbContext 進行資料存取的動作矣,比如講:

參考