大家好,好久不見,EF系列之前落下了,還是打算重新整理一下。 先說說目前的打算:先簡單瞭解一下EF基礎系列-->然後就是EF 6 Code-First系列-->接著就是EF 6 DB-First系列-->最後就是EF Core系列的學習了。EF Model-First已經過時,被微軟拋棄,就不學了。 ...
大家好,好久不見,EF系列之前落下了,還是打算重新整理一下。
先說說目前的打算:先簡單瞭解一下EF基礎系列-->然後就是EF 6 Code-First系列-->接著就是EF 6 DB-First系列-->最後就是EF Core系列的學習了。EF Model-First已經過時,被微軟拋棄,就不學了。這一次打算好好整理一下,一定不會爛尾,更新的可能慢點,但一定不爛尾,一定不爛尾,一定不爛尾。謝謝大家支持!
好了,廢話不多說,直接步入正題。
本系列是翻譯系列,原文地址是:什麼是Entity Framework?
早在.NET 3.5以前,程式員都是經常寫ADO.NET代碼或者使用企業內部訪問數據的代碼塊,來從相應的資料庫中查詢數據或者保存數據到其中。我們經常需要打開資料庫的連接,然後創建一個數據集(DataSet),來查詢數據,或者提交數據到資料庫,然後手動寫代碼將DataSet的數據轉化為.NET 對象中,反之亦然。這樣的做法是累贅的,而且容易出錯。微軟提供了一個框架叫做“Entity Framework”,用來簡化上述的操作。
Entity Framework是微軟一手打造的開源的ORM框架。它確保開發者可以使用特定的領域類而不是把時間消耗在相關聯的數據表和表的數據列上,使用EF,開發者可以在處理數據的時候,只用專註於更高級別的抽象層,寫更少的代碼就可以完成和傳統開發相同的工作。
官方的定義是:“EF是關係對象映射框架,它確保.NET開發者開發者,使用.NET對象來和資料庫打交道,而不必去寫傳統開發模式中的資料庫訪問的代碼”。
下麵的圖形,列出來了EF在你的項目中的起到的作用。
如上圖所示,EF嵌套在業務層和資料庫層中間,數據保存的時候是這樣,數據值保存在業務層的屬性中,然後通過EF轉化之後保存到資料庫,查詢數據的時候,也是類似,數據從資料庫抓取之後,通過EF轉化之後,就傳遞給業務層的屬性中。
Entity Framework的特點:
- 跨平臺(Cross-platform):EF Core是跨平臺的框架,可以運行在WIndows,Linux和Mac上;
- 模型化(Modelling):EF基於POCO(Plain Old CLR Object)實體,創建了一個實體數據模型(EDM--Entity Data Model),這些實體數據具有不同類型的屬性。當查詢或者保存資料庫的時候就會使用到這些實體,和相應的數據打交道。
- 查詢(Querying):EF允許我們使用LINQ查詢語法來從資料庫獲取數據,資料庫提供程式將會把LINQ語句,翻譯成SQL語句。EF同樣還是允許我們使用原生的SQL。
- 更改追蹤(Change Tracking):EF會持續追蹤,將要提交到資料庫的實體的任何改變。(這裡指的是實體的屬性值得改變)。
- 保存(Saving):當你調用EF的SaveChanges方法的時候,EF就會對資料庫發起,執行增刪查改的指令。EF同樣提供了非同步保存SaveChangesAsync的方法。
- 併發(Concurrency):EF預設使用樂觀併發,來確保數據從資料庫獲取之後,被其他用戶更改。
- 事務(Transactions):查詢或者保存數據的時候,EF提供了自動的事務管理,當然EF可以允許你自定義事務操作。
- 緩存(Caching):EF提供了一些開箱即用的緩存。所以當重覆查詢數據的時候,會直接從緩存獲取數據,而不是又去查詢一遍資料庫。
- 內置的約定(Built-in Conventions):EF遵循約定大於配置原則,根據這些原則自動配置EF實體。
- 配置(Configurations):EF允許我們使用數據註解特性(Data annotation attribute)來配置EF實體,還可以使用Fluent API,來重寫預設的配置。
- 遷移(Migrations):EF 提供了一系列的遷移指令,我們可以通過Nuget Package Manage 控制台來執行這些指令或者使用命令行的方式來執行這些操作。
Entity Framework最新的版本
EF是在2008年的時候,跟隨.NET Framework 3.5一起由微軟發佈的。從那時候開始就一直迭代開發,經歷了很多版本。
當前的版本是 EF6和EF Core(註意:這是這篇文章中寫的時候,最新的版本,實際上,EF Core 3.0都出來了,而且EF現在是6.2的版本)。下麵的圖,列出來了EF6和EF Core之間的差異。
EF 6版本的歷史
EF Core版本的歷史
好了,EF的繼續系列,第一篇就介紹完了。有不明白的可以留言,謝謝支持。
附錄:
EF 6官方文檔: https://docs.microsoft.com/zh-cn/ef/ef6/
EF Core官方文檔:https://docs.microsoft.com/zh-cn/ef/core/