EF Core 和 EF6的區別


 

  • EF Core

    Entity Framework Core (EF Core) 是適用於 .NET 的新式對象數據庫映射器。 它支持 LINQ 查詢、更改跟蹤、更新和架構遷移。

    EF Core 通過數據庫提供程序插件模型與 SQL Server/SQL Azure、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和更多數據庫配合使用。

    EF6

    Entity Framework 6 (EF6) 是專為 .NET Framework 設計的對象關系映射器,但支持 .NET Core。

  •  EF6 是一款受支持的穩定產品,但我們不再對其進行積極開發。

    功能比較

    EF Core 提供了不會在 EF6 中實現的新功能。 但是,並非所有 EF6 功能都已在 EF Core 中實現。

    下表比較了 EF Core 和 EF6 中可用的功能。 這只是大致比較,沒有列出全部功能,也未解釋不同 EF 版本中相同功能之間的差異。

    EF Core 列指出了功能首次出現的產品版本。

    創建模型

    表 1
    功能 EF6.4 EF Core
    基本類映射 1.0
    帶有參數的構造函數   2.1
    屬性值轉換   2.1
    沒有鍵的映射類型   2.1
    約定 1.0
    自定義約定 1.0(部分;#214
    數據注釋 1.0
    Fluent API 1.0
    繼承:每個層次結構一個表 (TPH) 1.0
    繼承:每個類型一個表 (TPT) 計划在 5.0 版中推出 (#2266)
    繼承:每個具體類一個表 (TPC) 5.0 版的延伸目標 (#3170) (1)
    陰影狀態屬性   1.0
    備用鍵   1.0
    多對多導航 計划在 5.0 版中推出 (#19003)
    多對多,無聯接實體 積壓工作 (#1368)
    密鑰生成:數據庫 1.0
    密鑰生成:客戶端   1.0
    復雜/已擁有類型 2.0
    空間數據 2.2
    模型格式:代碼 1.0
    從數據庫更新模型:命令行 1.0
    從數據庫更新模型 部分 積壓工作 (#831)
    全局查詢篩選器   2.0
    表拆分 2.0
    實體拆分 5.0 版的延伸目標 (#620) (1)
    數據庫標量函數映射 2.0
    字段映射   1.1
    可為空引用類型 (C# 8.0)   3.0
    模型的圖形可視化效果 未計划支持 (2)
    圖形模型編輯器 未計划支持 (2)
    模型格式:EDMX (XML) 未計划支持 (2)
    從數據庫更新模型:VS 向導 未計划支持 (2)

    查詢數據

    表 2
    功能 EF6.4 EF Core
    LINQ 查詢 1.0
    可讀內容生成的 SQL 1.0
    GroupBy 轉換 2.1
    加載關聯數據:預先 1.0
    加載關聯數據:預先加載派生類型   2.1
    加載關聯數據:延遲 2.1
    加載關聯數據:Explicit 1.1
    原生 SQL 查詢:實體類型 1.0
    原生 SQL 查詢:無鍵實體類型 2.1
    原生 SQL 查詢:使用 LINQ 編寫   1.0
    顯式編譯的查詢 2.0
    await foreach (C# 8.0)   3.0
    基於文本的查詢語言(實體 SQL) 未計划支持 (2)

    保存數據

    表 3
    功能 EF6.4 EF Core
    更改跟蹤:快照 1.0
    更改跟蹤:通知 1.0
    更改跟蹤:代理 已在 5.0 版中合並 (#10949)
    訪問跟蹤的狀態 1.0
    開放式並發 1.0
    事務 1.0
    批處理語句   1.0
    存儲過程映射 積壓工作 (#245)
    斷開連接低級別 API 圖形 1.0
    斷開連接端到端圖形   1.0(部分;#5536

    其他功能

    表 4
    功能 EF6.4 EF Core
    遷移 1.0
    數據庫創建/刪除 API 1.0
    種子數據 2.1
    連接復原 1.1
    攔截器 3.0
    事件 3.0(部分;#626
    簡單的日志記錄 (Database.Log) 已在 5.0 版中合並 (#1199)
    DbContext 池   2.0

    數據庫提供程序(3)

    表 5
    功能 EF6.4 EF Core
    SQL Server 1.0
    MySQL 1.0
    postgresql 1.0
    Oracle 1.0
    SQLite 1.0
    SQL Server Compact 1.0 (4)
    DB2 1.0
    Firebird 2.0
    Jet (Microsoft Access)   2.0 (4)
    Azure Cosmos DB   3.0
    內存中(用於測試)   1.0

    1 在給定版本中,不太可能實現延伸目標。 但如果一切順利,我們將嘗試加入相關功能。

    2 EF Core 中不會實現某些 EF6 功能。 這些功能依賴於 EF6 的基礎實體數據模型 (EDM),並且/或者是復雜功能,投資回報率相對較低。 歡迎提出反饋,但是,盡管 EF Core 支持許多在 EF6 中無法實現的功能,反過來,EF Core 支持 EF6 的所有功能卻並不可行。

    3 更新到新的 EF Core 主版本時,第三方實現的 EF Core 數據庫提供程序可能延遲。 有關詳細信息,請參閱數據庫提供程序

    4 SQL Server Compact 和 Jet 提供程序僅適用於 .NET Framework(而不適用於 .NET Core)。

    受支持的平台

    EF Core 3.1 通過使用 .NET Standard 2.0 在 .NET Core 和 .NET Framework 上運行。 但 EF Core 5.0 不會在 .NET Framework 上運行。 有關更多詳細信息,請參閱平台

    EF6.4 通過多目標在 .NET Core 和 .NET Framework 上運行。

    針對新應用程序的選擇指南

    除非應用需要僅在 .NET Framework 上受支持的內容,否則對於所有新應用程序都在 .NET Core 上使用 EF Core。

    針對現有 EF6 應用程序的選擇指南

    EF Core 不是 EF6 的直接替換項。 從 EF6 遷移到 EF Core 可能需要更改應用程序。

    將 EF6 應用遷移到 .NET Core 時:

    有關詳細信息,請參閱從 EF6 到 EF Core 的遷移

    • 如果數據訪問代碼穩定且不太可能開發或需要新功能,請繼續使用 EF6。
    • 如果數據訪問代碼不斷演變,或應用需要僅在 EF Core 中提供的新功能,請遷移到 EF Core。
    • 遷移到 EF Core 通常也是為了提高性能。 但是,並非所有方案都可提高性能,因此請先進行分析。

官方文檔區別:https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/

EF6官方文檔:https://docs.microsoft.com/zh-cn/ef/ef6/get-started

EFCore官方文檔:https://docs.microsoft.com/zh-cn/ef/core/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM