1. 程式人生 > >ORM系列之二:EF(4) Model First

ORM系列之二:EF(4) Model First

  前面我們已經介紹過EF中Code First開發模式,簡而言之,就是不管三七二十一直接寫程式碼,不過對於很多開發人員來說,可能並不習慣這樣來開發,並且安裝標準的開發流程,應該是先建模再進行編碼,當然EF也是支援這樣做的,那我們今天就簡單介紹一些現有模型的開發模式——Model First。

  具體步驟如下:

  1. 新建一個控制檯程式,叫做“EF.ModelFirstSample”。

  

  2.安裝EF,因為我們之前已經安裝了EF,所以開啟NuGet包管理器介面直接安裝到新的工程中,如果沒有安裝,要自己去安裝。

  

  3.建立模型

   新增“現有項”,選中“資料”下的“ADO.NET實體資料模型”。

  

  從開啟的窗體中,選擇“空EF設計器模型”。

  

  完成之後,我們就可以看到EF的模型設計器面板,右鍵,新增實體,輸入如下資訊:

  

  選中Blog實體,右鍵新增兩個屬性,分別為Name和Url,完成之後如下:

  

  參照上述步驟,新增Post實體,並且新增Title和Content屬性,再在設計面板上右鍵為Blog和Post實體增加關聯關係,如下:

  

  4.生成資料庫

  至此,我們的簡單模型已經設計好,現在可以在設計面板右鍵,點選“根據模型生成資料庫”

  

  在彈出的窗體中配置好連線的資料庫

  

  一切順利的話,點選“下一步”,此時就可以看到建表語句了,如下圖:

  

  點選完成之後,我們可以在vs新開啟的窗體中可以看到最終生成SQL語句,這個時候只是生成了SQL語句,但是並沒有真正執行,還需要手動點選一下執行:

  

  OK,我們的模型已經成功建立。

  5.讀寫測試

  我們已經有了模型,並且基於此模型已經生成好了資料庫,現在可以根據這個模型進行讀寫操作。

  下面程式碼,主要是向Blog表中插入一條資料,並且讀取出來,具體程式碼實現如下:

複製程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using
System.Threading.Tasks; namespace EF.ModelFirstSample { class Program { static void Main(string[] args) { using (var db = new BlogModelContainer()) { var blog = new Blog { Name = "test Name",Url="testUrl" }; db.BlogSets.Add(blog); db.SaveChanges(); var query = from b in db.BlogSets orderby b.Name select b; foreach (var item in query) { Console.WriteLine(item.Name); } Console.ReadKey(); } } } }
複製程式碼

  執行之後我們去資料庫檢視,可以發現已經成功添加了一條記錄,並且成功讀取。

  6.處理模型改變

  Model First模式下的模型改變之後,只需要在設計面板中右鍵點選“根據模型生成資料庫”,和之前生成資料庫一樣,生成指令碼之後要手動執行。

  

  如上是為Blog增加一個Author屬性,更新的資料庫Blog中可以看到多出一個Author欄位。