1. 程式人生 > >EF Core 快速上手——EF Core 入門

EF Core 快速上手——EF Core 入門

對象關系 頁面 閱讀 不同之處 alt ram demo 事情 數據庫服務

EF Core 快速上手——EF Core 介紹


本章導航

  • 從本書你能學到什麽
  • 對EF6.x 程序員的一些話
  • EF Core 概述
    • 1.3.1 ORM框架的缺點
  • 第一個EF Core應用

技術分享圖片

??本文是對《Entity framework in action》部分章節的翻譯,某些場景也會附上筆者實踐的Demo。盡管很認真的斟酌,但是水平有限,還請各位批評和斧正。

??Entity Framework Core, 或者 EF Core,是一個方便軟件工程師訪問數據庫的庫。有很多方法來構建這樣的一個庫,但是EF Core 被設計為一個對象和關系的映射器(也就是我們常說的ORM框架)。ORM是把兩個世界的東西映射在一起,一個是關系型數據庫自身API,另一個是面向對象世界的類和軟件代碼。EF Core的優勢在於,讓軟件工程師能夠通過代碼快速訪問數據庫。

??EF Core,微軟發布於2016年,它具有跨平臺性:它可以運行在Windows,Linux,mac等操作系統上。它使用EF Core來命名的主要原因,確實是因為他是.NET Core 原創的一部分(但是.NET Core 也可以用於現存的.NET Framework)。

?? EF Core, ASP.NET Core (服務端APP), 和 .NET Core都是開源的,並且都有提供給開發團隊交流的活躍的issues頁面。

?? EF Core不是 Entity Framework的第一個版本.現存的大家最為熟知的Entity Framework版本是EF 6.X. EF Core一開始就汲取了Entity Framework 4到6.x多年積累的經驗和反饋意見。她保持了和EF 6.x一樣接口,但是在底層做了重大改造。比如,它支持非關系性數據庫,這在EF 6.x中並沒有設計。作為EF5和6.x的用戶,我能看到EF Core相對於此前的版本有了提高,同時也看到我喜歡的那些在EF 6.x中的特性在EF Core中還沒有(盡管那些特性已經在列入了開發日程)。

?? 本書的目標讀者可以是那些從未使用過Entity Framework的開發人員,也可以是那些EF 6.x老手,還可以是那些想了解EF Core 能做什麽的人。我假定你們都熟悉.net 和 C#開發,至少對關系型數據庫有所了解。但我不假定你們會使用SQL語言(一種用於大多數關系型數據庫的語言),因為EF Core能夠幫你做太多的事情(不用sql).但是,我會想你展示EF Core生成的SQL,因為它能幫助您理解發生了什麽。使用EF的某些高級特性需要有SQL知識,而本書會提供大量的插圖來幫助您學習。

??本章將通過也小例子來價紹EF Core的使用。這個例子會調用EF Core.你也將會你看到 EF Core是底層是如何翻譯軟件命令並訪問數據庫。對EF Core底層原理的概覽有助於閱讀本書的其余部分。

1.1 從本書你能學到什麽

??本書被分為三個部分.除了本章,第一部分還有其它四章。

??學完第一部分,你將能夠使用關系數據庫構建一個.net 應用。但是數據庫的組織方式留給EF Core來處理。舉個例子,EF Core 默認會設置數據庫字段的類型和大小,這會浪費一點點空間。

??第二部分,會涉及到如何和為什麽要修改默認配置,並深入地查看一些EF Core 命令。學完第二部分,您將能夠根據您的想法,用EF Core精準的創建數據庫.或者鏈接那些具有特定結構和設計的數據庫。並且,通過使用EF Core的一些高級特性,您能夠改變你.net 應用程序中數據庫數據的暴露方式——比如,控制軟件更加謹慎地訪問數據或者構建代碼來自動跟蹤數據庫的變化。

??第三部分,全是關於提高您的技能,以及使您能夠更好地開發和調試EF Core應用程序。我展示了一個真實的EF Core應用,從一系列熟知的模式和實踐入手,而這是您是可以拿來即用的。閱讀這些章節,你可單元測試,對EF Core進行擴展,而最重要的是,可以發現和修復EF Core 的性能問題。

1.2 對EF6.x 程序員的一些話

如果你是Entity Framework的新手,可以跳過本節。

?? 如果你是熟悉EF 6.x的讀者,EF Core的大部分你會熟悉。為了引導您快速地閱讀完本書,我增加了EF6的說明。

EF 6

在本書中,請留意這樣的說明。他們指出了EF Core和EF 6.x的不同之處。同時,一定要看每章末尾的總結。他們會指出EF Core和EF 6.x的重大變化。

??我將以自己學習EF Core經歷給你一些建議。我太熟悉EF 6.x,在我剛開始學習EF Core的時候,卻變成了一個問題。

??我使用EF 6.x的方法處理問題,但不知道EF Core 有新的方法解決這些問題。在大多數情況中,這些方法是類似的,但是一些方面,卻不是。

??對於使用過EF 6.x的讀者,我的建議是請把EF Core當成一個新的庫,就當是某些人模仿EF 6.x寫的。但是,必須明白它與EF 6.x不同。
那樣,你會註意到EF Core中c處理問題的新的和不同的方法。

1.3 EF Core 概述

??.NETCore用於關系型數據庫和.net世界中類和代碼的映射,俗稱ORM框架。表1.1展示了他們之間的映射關系。

技術分享圖片

1.3.1 ORM框架的缺點

??造一個好的ORM框架非常困難。盡管EF 6.x和EF Core看起來很好用,某些時候的EF Core的“魔法”讓你驚嘆。在我們深入學習EF Core工作原理之前,請讓我提出兩個問題。

??第一個是對象關系的不匹配。數據庫服務器和面向對象的軟件使用不同的規則:數據庫使用主鍵來定義一條記錄的唯一性,然而,.net類的實例默認是以它們的引用來區分。EF Core幫助你處理了大部分,但是.net 類會被這些key和value"汙染"。大多數情況下,EF Core會運行良好,但是為了適應數據庫,對於純軟件的項目解決方案,有時候我們處理的有一點點不同。你將在第二章看的例子就是多對多關系:在C#中處理很容易,但是在數據庫中有點繁瑣。

??第二個問題是ORM框架——特別像EF Core這樣盡善盡美的框架——把數據庫隱藏的很好以至於有時候你會忘記數據庫的底層是如何運作的。這個問題回導致你的代碼在測試APP上運行良好,但是在數據庫很復雜且同時有大量用戶時的真實環境中表現糟糕。

??這就是我為什麽會花時間在本章,展示EF Core內部是如何工作的,以及如何生成SQL的。你越了解EF Core的工作原理,你就越能夠寫出好的EF Core代碼。更重要的是,當它不工作的時候你知道做什麽。

NOTE:

貫穿於這本書,我本著"先跑起來,但是在我需要的時候能夠變得更快"的思路來使用EF Core.
EF Core 讓我開發快速,但是我也意識到,因為EF Core或者我沒有很好的使用EF Core導致在一些特定的業務需求,數據庫訪問的性能不夠好。第5章會介紹如何隔離你EF Core,這樣你就能以最小的副作用體調整它。第13章將介紹如何發現和優化那些不夠快速的EF Core代碼。

1.4 第一個EF Core應用

https://github.com/HuYiDaoKing/zhikecore

參考

  • ??《Entity Framework Core In Action》

技術分享圖片技術分享圖片

EF Core 快速上手——EF Core 入門