版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/qq1010885678/article/details/38306841
之前已經簡單的介紹過ORM架構和EF
也了解了EF的種種優點
那麼這個EF到底長啥樣子都還沒見過呢
别着急
接下來,科學教育頻道--走近科學
帶你走進EF的内心世界~
那麼接下來就是~
等等等等...
在實際操作之前
我們有必要先了解清楚 對象關系映射 到底是啥
有同學會問
了解這做什麼
學會怎麼用不就好了?
這你就大錯特錯了
如果這時候你要把EF當做你的老婆
你選老婆的時候會這麼不在乎嗎~
如果你什麼都不知道娶了一個老太太
那也是老婆啊
隻不過是老了一點而已,人家年輕的時候也是江南一枝花呢!
其實就是為了強調學知識要了解原理,了解透徹這個道理而已~~
廢話不說~上一張本菜自己畫的對象關系映射圖
原諒本菜水準有限= =
如果看不懂,請google之~
相信會有讓你滿意的答複
那麼現在我們就來開始解剖EF~
但是解剖之前肯定是需要一個EF檔案呀
為了友善,本菜建了個控制台程式,并且準備了一個資料庫
關系圖:
項目上右鍵->添加->建立項
選擇ADO.NET實體資料模型
有的同學使用vs2010添加項的時候可能會沒有這個ADO.NET實體資料模型
那可能是因為沒有安裝這個模闆
網上下一個下來安裝就ok啦
你問為什麼我會知道這麼多?
因為我以前用vs2010的時候也沒有...shit!
選擇從資料庫中生成(DbFirst)
然後...(這裡略過一些簡單的添加過程)
添加完成之後會發現項目中對了一個小玩意兒
貼圖出來曬曬
沒錯就是她,字尾名為edmx的家夥,這就是傳說中的EF
輕按兩下edmx看看這到底是個啥
是不是發現和資料庫中的關系圖很像?
這就是EF的可視化的關系模型
你可以再這裡随意的添加你想要的屬性
生成資料庫的時候會将新增的屬性更新到資料庫對應的表中
并将關系映射儲存在xml中
我們可以通過這個來設計實體資料模型,而不必自己辛苦的編寫xml代碼
這就是二房的威力呀!
不信你可以試試,我會騙你?
那麼從頭到尾一直在說關系映射儲存在一個xml文檔中
那這個xml文檔在哪,怎麼啥都看不到
别急~
右鍵edmx檔案->打開方式,選擇xml文本編輯器
點選确定之後
接下來
就是見證奇迹的時刻!
哇靠!這一大坨什麼鬼東西!
沒錯,它确實是鬼東西,亂七八糟的反正我是看不懂= =
但是我看懂了一個
裡面都是xml代碼
咦..
edmx的關系圖變成了一個xml文檔
這搞啥飛機?
其實這個edmx檔案本身就是一個xml文檔,而且就是我們苦苦尋找的那個儲存關系映射的xml文檔!
是以在操作實體關系圖的時候其實就是在編寫對象關系的xml代碼
是不是很人性化
這個老婆越看越喜歡呀~
現在我們将這個xml代碼折疊一下
可以看到整個文檔可以分為三個部分
SSDL content
CSDL content
C-S mapping content
本菜英文不是很好是以看不懂...
但是我們既然知道這個xml檔案的作用是儲存對象關系的映射
那麼我們可以來猜測一下
S開頭的那家夥,好像SQL也是S開頭的
先打開它看看
仔細看看也許你會發現下面的節點
咦,這個好像是資料庫中T_Users表和裡面字段的資訊也,然後在看到有一個Type="nvarchar(max)"這不就是資料庫表字段的類型嗎!
沒錯,SSDL content裡面儲存的就是資料庫中表的資訊
那麼我們再來看看CSDL content
打開它還是會發現有一個一樣的節點
但是這個節點屬性的類型明顯不一樣,這不就是我們很熟悉的C#中的類型嗎
那麼這個CSDL content儲存的就是程式中實體類的資訊
那麼最後的C-S mapping content就很明顯了
肯定是儲存表和類的對應關系
不信你打開瞧瞧
我會騙你?
EF會根據這個edmx的xml文檔來生成EF資料上下文
還有對應資料庫表的實體類
你猜猜哪個是資料上下文哪個是實體類?
别逗了好嗎...
Model.Context.cs
和T_Users.cs T_Products.cs很明顯了吧...
那麼字尾名tt的東西是啥?
這些其實是模闆檔案
EF根據xml生成這些模闆
然後根據模闆檔案生成的資料上下文和實體類
好了,EF的大概檔案結構就是這樣
是時候休息了~
欲知後事如何,且聽下回分解