Entity Framework(EF的Model First方法)


EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架。同其它ORM(如,NHibernate,Hibernate)一樣,

一是為了使開發人員以操作對象的方式去操作關系型數據表。

二是為了屏蔽底層不同廠商的數據庫,開發人員面向ORM框架編寫數據的CRUD(Create,Retrieve,Update,Delete)操作,再由ORM框架將這些操作翻譯成不同數據庫廠商的語言。

從EF 4.X開始支持三種構建方法:1. Database First方法。2.Model First方法。3.Code First 方法。

 

本次測試以Visual Studio2013 / MS Sql Server2012 / Entity Framework 6.X 測試EF 

Model First Demo (Models修改了,中間不能直接映射數據庫)

【Model First 導航屬性:不需要自己創建,是表之間有了關聯之后,自己就會創建出來】

//注意:更新Model到數據庫時會刪除原來表格和數據,再創建新的表格

關鍵:關系的創建

1: 創建空模型的實體數據模型,

2: 創建實體、關系

3: 關系包括:1:1,1:n,m:n (建議不要使用1:1,性能低(不會延遲加載,添加時必須同時創建兩個對象),可以使用1:m的方式進行代替處理)

  關系m:n,有一張中間表,左:1:m 關系,右:1:n 關系,在數據庫中存在這張中間表,在edmx中不存在(可以使用導航屬性操作m:n關系)

4: 可以生成導航屬性,也可以不生成

1:打開SQLServer2012,使用下面SQL文本創建MyFirstModelFirstEF數據庫(Model First EF不會幫我們創建數據庫,只會幫我們創建表。所以我們要事先把數據庫建立好)

create database MyFirstModelFirstEF
on primary
(
    name='MyFirstModelFirstEF.mdf',
    --修改為自己電腦上SQL DB路徑
    filename='D:\yangZ_MSSQL\MyFirstModelFirstEF.mdf',
    size=5mb,
    maxsize=100mb,
    filegrowth=10%
)
log on
(
    name='MyFirstModelFirstEF_log.ldf',
    --修改為自己電腦上SQL DB路徑
    filename='D:\yangZ_MSSQL\MyFirstModelFirstEF_log.ldf',
    size=2mb,
    maxsize=100mb,
    filegrowth=5mb
)
go

2:新建ConsoleApplication應用程序

 

3:在EFDataBaseFirstDemo上 右鍵-->新建-->新建項-->數據-->ADO.NET實體數據模型,選擇空模型,然后點擊完成

4:此時會自動打開**.edmx設計界面(若沒有打開,直接在項目解決方案中,雙擊**.edmx文件)

  

5:通過edmx設計界面, 我們把上次Database First Demo中的CustomerInfo/OrderInfo表格生成出來,如下圖所示,並導入數據庫

6:在edmx設計頁面,一種可以通過工具箱,拖拽設計頁面,另外一種直接右鍵-->新增來設計表格,本次直接通過右鍵-->新增來設計表格

6.1:設計CustomerInfo表格,在**.edmx設計界面空白處,直接右鍵-->新增-->實體,填寫相關內容(在這里可以設置主鍵id為Identity,默認為自增長為1,這個在Model First設計界面沒辦法修改默認自增長值)

 

此時,選中id屬性,鼠標右鍵-->屬性(或者直接F4),可以打開屬性界面,在屬性界面可以繼續修改剛剛創建的字段

6.2:繼續新增customerName string類型/customerDate datetime類型

選中CustomerInfo設計界面,右鍵-->新增-->標量屬性,修改name==customerName,選中剛剛新增的customerName字段,修改屬性(F4)

關於MSSQL Server數據類型介紹參考:http://www.cnblogs.com/Dr-Hao/p/5197238.html

 

6.3:新增customerDate datetime類型字段,右鍵-->新增-->標量屬性,修改name==customerDate,選中剛剛新增的customerDate字段,修改屬性(F4)

關於MSSQL Server數據類型介紹參考:http://www.cnblogs.com/Dr-Hao/p/5197238.html

   

至此CustomerInfo數據庫字段已經創建完畢,OrderInfo表格和字段(id[int],orderName[nvarchar(100)],customerId[int,foreign key])創建類似

6.4:把CustomerInfo和OrderInfo表格建立關聯關系(在**.edmx空白處,右鍵單擊-->新增-->關聯)

 

最后整體**.edmx實體圖顯示如下:

 7:此時,數據庫中沒有數據表。我們在edm設計器上空白地方,右鍵-->根據模型生成數據庫

[Model First EF不會幫我們創建數據庫,只會幫我們創建表。所以我們要事先把數據庫建立好]

點擊下一步,如下圖,生成對應的SQL文本

點擊完成(有可能出現下面的警告),點擊確定之后,如下圖所示:

當連接服務器成功以后,點擊:執行腳本。則會在數據庫MyFirstModelFirstEF中生成相應的數據表

    

最后ModelFirstEFDemo整體結構如下所示:

最后在ConsoleApplication中做一個增加數據的Demo

DbContext context = new Model1Container();

//使用導航屬性 新增CustomerInfo和OrderInfo數據
CustomerInfo customer = new CustomerInfo()
{
    customerName = "ModelFirstTestOne",
    customerDate = DateTime.Now
};
customer.OrderInfo.Add(new OrderInfo()
{
    orderName = "ModelFirstTestTwo"
});
context.Set<CustomerInfo>().Add(customer);
context.SaveChanges();

此時數據庫數據如下所示:

參考文章:

ASP.NET MVC EF直接更新數據(不需查詢):http://www.cnblogs.com/Dr-Hao/p/5255630.html

ASP.NET EF(LINQ/Lambda查詢):http://www.cnblogs.com/Dr-Hao/p/5356928.html

ASP.NET EF 使用LinqPad 快速學習Linq:http://www.cnblogs.com/Dr-Hao/p/5357112.html

 Ps:使用EF Model First時,若修改Model結構,或者字段,需要在**.edmx中做如下操作

重復第7步驟:此時,數據庫中沒有數據表。我們在edm設計器上空白地方,右鍵-->根據模型生成數據庫 [Model First EF不會幫我們創建數據庫,只會幫我們創建表。所以我們要事先把數據庫建立好]

注意:更新Model到數據庫時會刪除原來表格和數據,再創建新的表格

即為:原來表格中的數據都會刪除掉,然后重新創建新的表格(對於數據量比較大的表格,不能這樣操作),可以通過【手動修改數據庫和edmx文件】

 


免責聲明!

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



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