日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】ORM系列之Entity FrameWork详解

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】ORM系列之Entity FrameWork详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 談情懷

?  從第一次接觸開發到現在(2018年),大約有六年時間了,最初階段連接數據庫,使用的是【SQL語句+ADO.NET】,那時候,什么存儲過程、什么事務 統統不理解,生硬的將SQL語句傳入SQLHelper類中,后來知道還要注意SQL注入,引入參數化的方式,現在回想一下,那個階段簡直Low到爆。

  (PS:現在很多場景下還是需要使用ADO.NET,所以沒有最好,只有最適合)

? ? ? ?凡事都是從零開始的,正是這個階段積累,才有了后續的發展。一次機會,接觸到了微軟的EF(ps:如果沒有記錯的話,當時用的是EF 5.0 的DBFirst模式),徹底顛覆了我的開發觀念,不需要寫SQL語句(那時還不清楚EF也可以調用SQL語句),Lambda表達式(并不知道Lambda還分Lambda表達式和Lambda語句),興奮了一陣,然后進入了漫長的EF摸索和填坑階段了(EF5.0→EF6.2→EF Core)。

  ? 如果你覺得EF不靈活,不能調用存儲過程或自定義事務?如果你覺得EF在處理海量數據庫的時候會很慢?如果你覺得EF滿足不了你的開發需求?。。。。。。 那么也許該系列的文章會對你有些幫助。

二. ORM框架

  說起DotNet領域的ORM框架,我們想到的有EF、NHibernate、FluentData、Dapper、SQLSugar等等。那么到底什么是ORM呢?

  ? ORM(Object Relational Mapping),中文名字:對象關系映射,它是面向對象思想的進一步的發揚光大,主要實現【程序對象】到【關系型數據庫】的映射。在之前使用ADO.NET開發的時候,數據庫訪問層(即 DAL),要寫很多增加、刪除、保存的方法,很是麻煩,如果引入ORM框架,它自帶CRUD的API(相當于DAL層已經給你寫好了),可以自動生成SQL語句,所以作為開發者而言,只需要關注對象即可。

  ?ORM的含義:

  ① O:Domain Object ?領域模型

  ② R:Relational DataBase 關系型數據庫

  ③ M : Mapping 映射關系

? ? ? ORM的三大核心原則:

  ① 簡單性:以最簡單的模式建模數據。

  ② 傳達性:數據庫結構被任何人都能理解的語言文檔化。

? ? ? ?③ 精確性:基于數據模型創建正確標準化的結構。

?

  EF的核心架構:

?

?

?  ① ?EDM(Entity Data Model):這是微軟提供的一個強大的可視化工具,用來生成 O、R、M的

  ② ?兩種語法的查詢:LINQ to Entities 和 Entity SQL

  ③ ObjectServices:Linq to Entities 和Entity Client Data Provider 之間起到轉換作用

  ④?Entity Client Data Provider: 將Lambda轉換成SQL語句

  ⑤ ADO.Net Data Provider: 標準的ADO.Net

  ⑥ DataBase:數據庫

?

三. 從EF的入手,深入理解ORM框架

?  EF(Entity FrameWork),是微軟推出基于ADO.NET的數據庫訪問技術,它是一套ORM框架, 框架中包括了實例模型、數據模型、關系映射三部分,EF的上下文為DbContext,EF在 【.Net FrameWork】版本中最新的是 6.2.0 版本,最穩定的是6.2版本,在【.Net Core】中推出 EF Core (即所謂的“EF7”,^_^,當然已經不這么叫了)。

  EF包括三種模式:DBFirst、CodeFist、ModelFirst 。EF可以調用SQL語句、可以使用Linq查詢、可以使用Lambda查詢,EF還有很多高級屬性,比如延遲加載、緩存屬性等等,在該系列文章中都將逐一詳細介紹。

  EF也有優缺點:

   優點:① ?EF是微軟自家的產品,和VS的集成度很高,極大的提高了開發效率。

      ? ② ?EF中ModelFirst模式提供的模型設計器功能很強大,且采用T4模板生成的代碼的功能很強大。

? ? ? ? ? ? ? ? ? ? ③ ?支持多數據庫開發,簡單的改變配置文件,就可以切換數據庫。

? ? ? ? ??缺點: 在復雜的查詢生成SQL腳本的效率不是很高,浪費了性能。

?  ? 舉例:之前在開發中,一張幼兒表里大約有60個字段左右,一個業務需要根據復雜的條件查詢出來一些信息(大約5個字段左右),當時由于按開發人員的失誤,寫的Lambda表達式直接將所有字段查詢出來,導致該業務耗時很長大約25s左右,后來在我的引導下,先去數據庫中直接寫SQL語句,查詢所有字段,發現速度很快;然后將EF中的Lambda查詢改為只查詢指定的5個字段,發現速度由25s→3s左右,提升非常明顯,當然這也很好的說明了EF的局限是在生成SQL的腳本效率上。

四. 系列章節

? ????? ?第一節: 結合EF的本地緩存屬性來介紹【EF增刪改操作】的幾種形式。

? ? ? ? ?第二節: 比較EF的Lambda查詢和Linq查詢寫法的區別。

? ? ? ? ?第三節: EF調用普通SQL語句的兩類封裝(ExecuteSqlCommand和SqlQuery )??

? ? ? ? ?第四節: EF調用存儲過程的通用寫法和DBFirst模式子類調用的特有寫法

? ? ? ? ?第五節: EF高級屬性(一) 之 本地緩存、立即加載、延遲加載(不含導航屬性)

? ? ? ? ?第六節: EF高級屬性(二)?之延遲加載、立即加載、顯式加載(含導航屬性)。

? ? ? ? ?第七節: EF的三種事務的應用場景和各自注意的問題(SaveChanges、DBContextTransaction、TransactionScope)。

? ? ? ? ?第八節: EF的性能篇(一) 之 EF自有方法的性能測試? ?:

? ? ? ? ?第九節: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解決EF的性能問題? ?:

? ? ? ? ?第十節: EF的三種追蹤實體屬性變化方式(DBEntityEntry、ChangeTracker、Local) ? ? :

? ? ? ? ?第十一節: EF的三種模式(一) 之 DBFirst模式(SQLServer和MySQL兩套方案):

? ? ? ? ?第十二節: EF的三種模式(二) 之 ModelFirst模式(SQLServer為例):

? ? ? ? ?第十三節: EF的三種模式(三) 之 來自數據庫的CodeFirst模式? ? :

? ? ? ? ?第十四節: EF的三種模式(四) 之 原生正宗的 CodeFirst模式的默認約定? ?:

? ? ? ? ?第十五節: EF的CodeFirst模式通過DataAnnotations修改默認協定? ?:

? ? ? ? ?第十六節: EF的CodeFirst模式通過Fluent API修改默認協定? ?:

? ? ? ? ?第十七節: EF的CodeFirst模式的四種初始化策略和通過Migration進行數據的遷移? :

? ? ? ? ?第十八節: EF的CodeFirst模式連接MySQL數據庫的解決方案(未完成)??:

? ? ? ? ?第十九節: 結合【表達式目錄樹】來封裝EF的BaseDal層的方法?:

? ? ? ? ?第二十節: 深入理解并發機制以及解決方案(鎖機制、EF自有機制、隊列模式等):

? ? ? ? ?第二十一節:ADO層次上的海量數據處理方案(SqlBulkCopy類插入和更新):

? ? ? ? ?第二十二節: 以SQLServer為例介紹數據庫自有的鎖機制(共享鎖、更新鎖、排它鎖等)和事務隔離級別? :

? ? ? ? ?第二十三節: EF性能篇(三)之開源組件 Z.EntityFrameWork.Plus.EF6解決EF性能問題? ?:

? ? ? ? ?第二十四節: ? ?:

? ? ? ? ?第二十五節: ? ?:

?

?

?  PS:EF Core 將單獨一個系列,敬請期待。。。。? ? ?該系列的EF后續將持續更新。

總結

以上是生活随笔為你收集整理的【转】ORM系列之Entity FrameWork详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。