Entity Framework快速入門筆記第四篇—ModelFirst


  前言:在上一篇博客中我們做了一個小的Demo,使用EF實現了對數據庫的增刪改查的操作,所謂學習,我們就要學會舉一反三,所以好好學習一下上一篇的內容還是方便以后的擴展學習,這篇博客我們主要來研究一下ModelFisrt,這什么意思呢??拿中文說就是實體最先建立模型,也就是我們在不建立數據庫的前提下,寫入實體框架,讓EF框架來幫我們完成建立數據庫的動作,下面我們就詳細來介紹一下,我們還是和上一章一樣,使用控制台來進行操作。

1.新建一個控制台應用程序,起名:EFModelFirstDemo

2.在項目中右鍵添加一個ADO.NET實體數據模型

3.選擇模型內容為空模型,如圖所示,單擊完成

  

4.當單擊完成之后,將會出現一個可視化方式設計的實體數據模型,如何操作在上面也有一些提示,如圖所示:

  

5.添加一個Entity FrameWork實體框架

  (1)從工具欄中拖放一個實體或者右鍵新增實體到設計器中,給新添加的實體起名為UserInfo,但我們添加進去實體的時候,默認已經給我們添加了一個ID主鍵。如圖所示:

      

  注釋:默認生成的實體中的ID是自動增長的類型,如果我們不需要或者使用Guid的ID序列號,那么我們一定要在ID上面右鍵屬性設置StoreGeneratedPattern的值為None。

  (2)在實體上面右鍵新增三個個標量屬性UserName,Pwd,SubTime。然后給每個字段設置標量屬性設置屬性,這里就不詳細說了,只要我們學習過數據庫的話,就一定會設置的,如圖所示:

    

  注釋:如果屬性的最大長度不設置的話默認是Nvarchar(Max),給SubTime的類型設置為DateTime時間類型。

  (3)我們在添加一個訂單表和一個用戶角色表,然后給這三個表之間建立關系,如何建立關系呢?其實很簡單,只要我們知道兩個表之間的關系是一對一,一對多還是多對多,然后右鍵新增一個關聯,最后整體的模型圖如圖所示:

     

6.根據上面的模型生成數據庫

  (1)在設計器中右鍵單擊根據模型生成數據庫,打開如圖所示的情形,對這張圖大家很熟悉。 

    

  (2)然后對上面的圖形進行填寫和鏈接數據,如圖所示:注意下圖中的選擇或輸入數據庫名稱我們要自己輸入數據庫的名稱,然后單擊確定,在單擊下一步,完成的時候數據庫已經幫我們創建好了。

    

  (3)當單擊完成之后就會根據實體模型生成SQL語句,如圖所示:

    

  (4)然后在上面的SQL語句中德空白中右鍵單擊執行,將會出現登錄數據庫的界面,這時候我們將登錄數據庫的信息填寫完畢,單擊Conntect,即可幫我們創建好我們模型中的表在數據庫中。查看數據庫如圖所示:數據庫的創建位置是默認的位置 

    

  (5)當到這一步的時候我們已經完成了創建數據庫的工作,是不是很爽呢。下來我們就驗證一下我們所生成的數據庫的是否能夠使用。

  (6)這時候如果我們設計的數據模型不合理或者那里有點小的Bug,怎么辦呢?很簡單了,再重新生成一把不就行了。

  (7)如果我們在數據庫中變化了呢?我們的模型變化了嗎?沒有,在這里要注意我們的模型必須要和數據庫一致。那么如何保持一致呢,在模型上面單擊右鍵選擇從數據庫更新模型, 出現一個界面,然后我們單擊完成,這時候我們的模型就和數據庫一致了。

7.使用EF幫助我們實現添加一條數據

  (1) 實現的代碼如圖所示:

    

  (2) 數據庫里面加入了三條信息,如圖所示:

    

  (3)使用數據庫的Profiler查看生成的SQL語句如圖所示,總共執行了三條語句,這里就不一一展示了。

    

8.使用EF幫我們實現一個查詢的結果

  (1) 第一種兩個表之間相連實現的代碼如圖所示:

    

  (2)使用數據庫的Profiler實現查看上面執行的SQL語句如圖所示:

    

  注釋:從上面的執行結果可以看出EF框架在執行上段代碼的時候使用Inner Join關聯兩個表之間的關系。

  (4)使用延遲加載來查詢UserInfo表的信息,有些信息在代碼的注釋里面有:代碼如下

   

  (5)查看結果如圖所示

    

  (6)通過Profiler查看生成的SQL語句如圖所示:   

    

    

  注釋:如果有任何疑問,可以到我們的博客園小組里面給我留言,我們的小組名稱是”青春代碼”,我們大家可以共同互相探討一下,也可以在下面給我留言,這樣只能我回復了,為了技術,讓我們共同努力吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM