EF三種編程方式詳細圖文教程(C#+EF)之Model First


Model First

Model First我們稱之為“模型優先”,這里的模型指的是“ADO.NET Entity Framework Data Model”,此時你的應用並沒有設計相關數據庫,在Visual Studio中我們通過設計對於的數據模型來生成數據庫和數據類。

首先創建一個控制台應用程序,右鍵添加新建項,選擇“ADO.NET Entity Data Model”,名稱輸入EFDemoDB(此名稱跟上一個沒有任何聯系,只是重名而已):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在模型設計視圖中,添加新實體:(空白處右鍵)

添加,兩個Scalar屬性:“Customer”和“OrderDate(為datetime類型,可選中它在屬性中修改)”;同樣的方式添加第二個實體“OrderDetail”,並添加“Product”和“UnitPrice”屬性:

 

接下來我們添加二者之間的關系,“Order”和“OrderDetail”是一對多的關系,“Order”可以通過“OrderDetails”屬性訪問“OrderDetail”實體,“OrderDetail”可以通過“Order”屬性訪問“Order”實體,並且添加了一個外鍵約束到“OrderDetail”中:

添加過關系后:

到目前為止Model First中的Model已經創建結束,下面就需要生成到數據庫了,在模型設計視圖空白處選擇“從模型生成到數據庫…”:(這里還是用的上面那個EFDemo數據庫,可根據自己需求更改,新建連接更換數據庫)

選擇數據庫連接,點擊下一步,你將會看到生成的sql語句:

點擊完成,不出意外的話將打開生成的腳本,當然你也可能會出現如下錯誤,請下載最新的SQL Server Data Tool(本地VS2012,數據庫SQLServer2008R2出現了下面的提示,下載更新即可,建議直接下載鏡像文件):

 

在模型保存后,生成了數據庫上下文和實體類,並且打開了建表的腳本:

說明:如果沒有,看看模型是否保存了(如下圖)

打開的數據庫腳本:

然后右鍵選擇執行即可。

然后編碼查詢一下:

復制代碼
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.ComponentModel;
 5 using System.Data;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 
 9 namespace EFDemo
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15              Order o = new Order() { Customer = "", OrderDate = DateTime.Now };            EFDemoDBContainer db = new EFDemoDBContainer();
16             db.Orders.Add(o);
17             int result = db.SaveChanges();
18 
19             var orders = from od in db.Orders select od;
20 
21             foreach (Order order2 in orders)
22             {
23                 Console.WriteLine("OrderID:{0},OrderDate:{1}", order2.Id, order2.OrderDate);
24             }
25 
26             Console.Read();
27         }
28     }
29 }
復制代碼

運行結果(正常情況下應該只有一行,這是我多次運行后的結果):

注意:如果我們的模型發生改變,只需要在模型設計視圖修改模型,讓后保存此時實體類就會相應改變,然后選擇“從模型生成到數據庫”重新執行生成的腳本即可。


免責聲明!

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



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