天天看點

ASP.NET MVC學習---(二)EF檔案結構

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 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的大概檔案結構就是這樣

是時候休息了~

欲知後事如何,且聽下回分解