1. 程式人生 > >【C#】EF學習<二> DbFirst (先建立資料庫,表及其關聯關係)

【C#】EF學習<二> DbFirst (先建立資料庫,表及其關聯關係)

工程壓縮檔案放到百度雲盤---20181019001資料夾

 

1. 建立表的指令碼

 

create table Teacher
(
TID char(12) primary key,
Tname char(6) not null
)

create table Student
(
SID char(12) primary key,
Sname char(6) not null,
Sage INT not null,
Ssex char(2) check(Ssex between ' 男' and '女')
)
 
create table Course
(
CID char(2) primary key,
Cname char(6) not null,
TID char(12) references Teacher(TID) ,
)
 
create table SC
(
SID char(12) references Student(SID),
CID char(2) references Course(CID),
Score int ,
primary key(SID,CID)
)


--------------------------------


Insert into Student values('201190609112','zzz',21,'男')
Insert into Course values('01','資料庫','111')
Insert into SC values('201190609112','01',100)
insert into Teacher values('111','劉培華')


select * from Student;

select * from Course;

select * from SC;

select * from Teacher;


---------------select查詢----------------------
select Tname,Cname
From SC,Teacher,Course
Where SC.CID = Course.CID and Course.TID=Teacher.TID and SC.SID='201190609112'

 

 

2. 新增ADO.NET實體資料模型

 

 

 

 

3.完成。。。。

 

 

建立實體資料模型:

本文將帶你建立實體資料模型(EDM)SchoolDB資料庫和理解基礎建設模組。

實體資料模型(EDM)是用於描述實體之間關係的一種模型,以下將使用Visual Studio 2012 和 EF6建立SchoolDB資料庫。

1.開啟Visual Studio 2012並建立一個Console專案

專案->屬性,確保target framework 為 .NET Framework 4.5。

2.增加EDM檔案,右鍵專案 -> 新增 選中ADO.NET Entity Data 並命名為'School'

3.隨後會出現EDM嚮導,有四個選項:EF Designer from database (資料庫優先功能),Empty EF Designer model(模型優先功能),Empty Code First model 和 Code First from database(程式碼優先功能)。在本基礎教程中暫時只關注資料庫優先功能,所以選擇EF Designer from database 選項,並且點選下一步。

4.你可以選擇已經存在的資料庫連線或者選擇新建一個連線。我們選擇已經存在的資料庫連線SchoolDB資料庫。這會將對應的連線字串加入app.config檔案,點選下一步。

5.這一步我們需要選擇EF的版本,這裡我們選擇EF6.0

注意:如果你已經安裝了EF的最新環境,這一步將不會出現。

6.這一步將顯示SchoolDB資料庫的所有表,檢視和儲存過程,選擇你想要建模的表,檢視,儲存過程。並且如果需要的話,可以修改名稱空間。

注意:

Pluralize or singularize generated object names 選項 表示所建立的物件屬性會注意單複數形式。例如,如果SchoolDB資料庫中有一個表名為Students的表,它創建出來的實體集合(如DBSet<T>)中的泛型引數(T)會以單數形式建立。又例如表間關係存在一對多或多對多關係的,如Student與Course之間的多對多關係,在Student實體物件中將存在一個複數形式的屬性名“Courses”的集合物件。

第二個選項,Include foreign key columns in the model,將外來鍵包含在模型中。例如Standard表和Student表存在一對多的關係,所以代表多個Student關聯一個Standard。在實體模型中Student將包含StandardId 這個標量屬性和Standard 這個導航屬性,如果沒有選中該項,則僅包含Standard 這個導航屬性,不包含StandardId 這個標量屬性。

第三個選項,Import selected stored procedures and functions into entity model,自動建立儲存過程和函式,這個選項通常是必須要的。

7.當點選“Finish”鍵後,一個名為“School.edmx”的檔案將出現在你的專案中。雙擊該檔案將開啟EDM設計器,它會顯示所有你剛剛選擇的表以及他們之間的關係。

EDM也會在config檔案中為你新增好連線字串

View Code

至此,你已經通過已有的資料庫創建出一個簡單的EDM模型了。

接下來我們將看看EDM (School.edmx)為我們建立了一些什麼檔案。

實體表對映:

每一個實體物件都被對映到對應的資料表中,你可以右鍵點選對應的實體物件並檢視對映關係。當然,如果你在EDM設計器中修改了實體物件的屬性名字,表對映也會自動應用該變化。

上下文及實體類:

每一個實體物件模型都會建立一個上下文類(Context Class)還有若干個你選中的表所對應的實體類在EDM中,展開School.edmx變能看見。

School.Context.tt:

這是T4模板檔案產生出來的上下文類。你可以展開.edmx檔案開到它,其中會建立預設名為{資料庫名} + "Entities"的類。該類繼承DBContext類(該類在EF在定義,EF5.0前為ObjectContext類)

School.tt:

這是T4模板產生出來的實體物件類,下面程式碼片段顯示了Student實體物件

View Code

EDM Designer:

EDM設計器代表你的概念模型,它代表實體物件和他們之間的關係。起初,它看起來完全跟你的資料庫表結構一樣,但你可以從設計器中新增,合併和刪除一些你的應用程式不需要的欄位。你甚至可以在這個模型中新增一個來自不同資料庫表的新物件到上下文選單中,像上面一樣。記住無論做了什麼改動都應該將它對映至儲存模型中。所以你做改動時必須小心。

你可以通過XML的方式開啟EDM設計器,這樣你將看到三部分,概念模式 (CSDL), 儲存模式 (SSDL) 和 對映表 (MSL) ,這三部分都在XML中。

右鍵點選School.edmx,選擇開啟方式。

選擇“XML (text) Editor”

Visual Studio 不能同時開啟模型設計外觀和XML編輯器,所以你會看到一個讓你關閉模型設計外觀的視窗。點選Yes將看到XML編輯器形式,然後你將看到以下介面。

你能看到SSDL, CSDL 和 C-S mapping 的內容,你可以展開這些內容進行瀏覽。你並不需要直接編寫XML資料,因為你可以直接在模型中瀏覽編輯。

分類: Entity Framework

 

建立實體資料模型:

本文將帶你建立實體資料模型(EDM)SchoolDB資料庫和理解基礎建設模組。

實體資料模型(EDM)是用於描述實體之間關係的一種模型,以下將使用Visual Studio 2012 和 EF6建立SchoolDB資料庫。

1.開啟Visual Studio 2012並建立一個Console專案

專案->屬性,確保target framework 為 .NET Framework 4.5。

2.增加EDM檔案,右鍵專案 -> 新增 選中ADO.NET Entity Data 並命名為'School'

3.隨後會出現EDM嚮導,有四個選項:EF Designer from database (資料庫優先功能),Empty EF Designer model(模型優先功能),Empty Code First model 和 Code First from database(程式碼優先功能)。在本基礎教程中暫時只關注資料庫優先功能,所以選擇EF Designer from database 選項,並且點選下一步。

4.你可以選擇已經存在的資料庫連線或者選擇新建一個連線。我們選擇已經存在的資料庫連線SchoolDB資料庫。這會將對應的連線字串加入app.config檔案,點選下一步。

5.這一步我們需要選擇EF的版本,這裡我們選擇EF6.0

注意:如果你已經安裝了EF的最新環境,這一步將不會出現。

6.這一步將顯示SchoolDB資料庫的所有表,檢視和儲存過程,選擇你想要建模的表,檢視,儲存過程。並且如果需要的話,可以修改名稱空間。

注意:

Pluralize or singularize generated object names 選項 表示所建立的物件屬性會注意單複數形式。例如,如果SchoolDB資料庫中有一個表名為Students的表,它創建出來的實體集合(如DBSet<T>)中的泛型引數(T)會以單數形式建立。又例如表間關係存在一對多或多對多關係的,如Student與Course之間的多對多關係,在Student實體物件中將存在一個複數形式的屬性名“Courses”的集合物件。

第二個選項,Include foreign key columns in the model,將外來鍵包含在模型中。例如Standard表和Student表存在一對多的關係,所以代表多個Student關聯一個Standard。在實體模型中Student將包含StandardId 這個標量屬性和Standard 這個導航屬性,如果沒有選中該項,則僅包含Standard 這個導航屬性,不包含StandardId 這個標量屬性。

第三個選項,Import selected stored procedures and functions into entity model,自動建立儲存過程和函式,這個選項通常是必須要的。

7.當點選“Finish”鍵後,一個名為“School.edmx”的檔案將出現在你的專案中。雙擊該檔案將開啟EDM設計器,它會顯示所有你剛剛選擇的表以及他們之間的關係。

EDM也會在config檔案中為你新增好連線字串

View Code

至此,你已經通過已有的資料庫創建出一個簡單的EDM模型了。

接下來我們將看看EDM (School.edmx)為我們建立了一些什麼檔案。

實體表對映:

每一個實體物件都被對映到對應的資料表中,你可以右鍵點選對應的實體物件並檢視對映關係。當然,如果你在EDM設計器中修改了實體物件的屬性名字,表對映也會自動應用該變化。

上下文及實體類:

每一個實體物件模型都會建立一個上下文類(Context Class)還有若干個你選中的表所對應的實體類在EDM中,展開School.edmx變能看見。

School.Context.tt:

這是T4模板檔案產生出來的上下文類。你可以展開.edmx檔案開到它,其中會建立預設名為{資料庫名} + "Entities"的類。該類繼承DBContext類(該類在EF在定義,EF5.0前為ObjectContext類)

School.tt:

這是T4模板產生出來的實體物件類,下面程式碼片段顯示了Student實體物件

View Code

EDM Designer:

EDM設計器代表你的概念模型,它代表實體物件和他們之間的關係。起初,它看起來完全跟你的資料庫表結構一樣,但你可以從設計器中新增,合併和刪除一些你的應用程式不需要的欄位。你甚至可以在這個模型中新增一個來自不同資料庫表的新物件到上下文選單中,像上面一樣。記住無論做了什麼改動都應該將它對映至儲存模型中。所以你做改動時必須小心。

你可以通過XML的方式開啟EDM設計器,這樣你將看到三部分,概念模式 (CSDL), 儲存模式 (SSDL) 和 對映表 (MSL) ,這三部分都在XML中。

右鍵點選School.edmx,選擇開啟方式。

選擇“XML (text) Editor”

Visual Studio 不能同時開啟模型設計外觀和XML編輯器,所以你會看到一個讓你關閉模型設計外觀的視窗。點選Yes將看到XML編輯器形式,然後你將看到以下介面。

你能看到SSDL, CSDL 和 C-S mapping 的內容,你可以展開這些內容進行瀏覽。你並不需要直接編寫XML資料,因為你可以直接在模型中瀏覽編輯。