Entity Framework是以ADO.NET為基礎,面向數據的“實體框架”。以下簡稱EF。
它利用了抽象化數據結構的方式,將每一個數據庫對象都轉換成利用程序對象 (entity),數據字段都轉換為屬性 (property),關系則轉換為結合屬性 (association),讓數據庫的 E/R 模型完全的轉成對象模型,如此讓程序設計師能用最熟習的編程語言來調用訪問。
個人認為百科上對EF1句比較經典的解釋為:讓上層的利用程序碼可以如面向對象的方式般訪問數據。
過去我們對數據庫都是直接讀取,業務數據中都是使用DataSet、DataTable等來傳值,造成代碼丑陋,嚴重脫離了OO的思想。
舉個例子,當向數據庫中存儲時,實體框架主要是用來幫助我們把1個個對象存儲到數據庫中去(即通過對象與數據庫“打交道”),只要把對象交給實體框架,不用自己寫SQL語句,它會幫助我們自動生成SQL語句,這里生成的SQL語句通過ADO.NET發送到數據庫中去,即操作數據庫還是通過ADO.NET,所以本文首句說到了“EF是以ADO.NET為基礎,面向數據的‘實體框架’ ”。
具體進程可以用下圖表示:
如上圖,假設要把內存中的兩個實體Student和Teacher存儲到數據庫中,EF會自動將實體通過EDM的映照,將1個實體作為1條記錄存入到數據庫中去,那EF是如何判斷哪一個實體應當存到哪張表里,哪一個屬性應當存到哪一個字段里呢?這就是映照的強大所在:
在VisualStudio中,映照通過 .edmx 文件來體現,.edmx文件的本質是1個 XML 文件,它用于定義概念模型、存儲模型和這些模型之間的映照。
比如在上例的映照中,可以通過類似于以下情勢來體現:
通過上面可以了解到,從讀代碼的角度來講,EF可使我們在不需要了解數據結構的情況下就能夠很好地理解;從實現的角度來講,EF可使存儲“模型化”,就猶如將很多個對象存儲在1個List中似的,向數據庫表里存儲的都是1個個實例,從數據庫中取到的也都是1個個實例。程序如此跟數據庫的交互,和OO化的代碼相互對應,容易“對接”。
下一篇 MongDB學習資料大集合