Entity Framework 教程——創建實體數據模型

来源:http://www.cnblogs.com/Inspire-Yi/archive/2016/12/25/6219312.html
-Advertisement-
Play Games

創建實體數據模型: 本文將帶你創建實體數據模型(EDM)SchoolDB資料庫和理解基礎建設模塊。 實體數據模型(EDM)是用於描述實體之間關係的一種模型,以下將使用Visual Studio 2012 和 EF6創建SchoolDB資料庫。 1.打開Visual Studio 2012並創建一個C ...


創建實體數據模型:

本文將帶你創建實體數據模型(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文件中為你添加好連接字元串

 1 <?xml version="1.0"?>
 2 <configuration>
 3   <configSections>
 4     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 5     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
 6   </configSections>
 7   <startup>
 8     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
 9   </startup>
10   <entityFramework>
11     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
12     <providers>
13       <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
14     </providers>
15   </entityFramework>
16   <connectionStrings>
17     <add name="SchoolDBEntities" connectionString="metadata=res://*/SchoolDB.csdl|res://*/SchoolDB.ssdl|res://*/SchoolDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=SchoolDB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
18   </connectionStrings>
19 </configuration>
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實體對象

public partial class Student
{
    public Student()
    {
        this.Courses = new HashSet<Course>();
    }
    
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public Nullable<int> StandardId { get; set; }
    public byte[] RowVersion { get; set; }
    
    public virtual Standard Standard { get; set; }
    public virtual StudentAddress StudentAddress { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}
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數據,因為你可以直接在模型中瀏覽編輯。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、24點游戲玩法規則效果展示 1、初始化界面 2、開始游戲界面 3、游戲超時界面 4、查看答案界面 5、答對界面 6、答錯界面 7、計算表達式的驗證界面 8、一副牌算完開始新一副牌界面 到這裡24點演算法基本操作圖就結束了,下麵來看看示例代碼吧。 二、完整代碼演示 關於代碼解釋,為了方便讀者瀏覽時更 ...
  • 登錄成功後寫入cookie的代碼 Response.Cookies["account"].Value = account;//"管理員" Response.Cookies["account"].Expires = DateTime.Now.AddDays(14); Response.Cookies[ ...
  • 回眸 C# 的前世今生 - 見證 C# 6.0 的新語法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本為 Visual Studio 2017 RC,兩者都尚未進入正式階段。C# 6.0 雖說出了一段時間,但是似乎有許多園友對這一塊知識並不瞭解,如拼接字元串的 $ 符號,在此,小人特地獻 ...
  • private void btnSave_Click(object sender, EventArgs e) //文件複製、保存方法 { #region 靜態複製文件(寫死) string desPath = @"c:\1\1.chm"; if (File.Exists(desPath)) ... ...
  • private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) //退出菜單方法 { //this.Close(); Application.Exit();//建議使用該關閉語句 } private void timer1... ...
  • ...
  • 在很多情況下,我們需要通過樹列表進行數據的展示,如一些有層次關係的數據,通過有層級的展示,能夠使用戶更加直觀查看和管理相關的數據。在一般Winform開發的情況下,可以使用微軟的TreeView控制項,也可以使用DevExpress的TreeList控制項進行數據的展示,本篇隨筆主要介紹基於DevExp... ...
  • 一、asp.net c# 打開新頁面或頁面跳轉 1. 最常用的頁面跳轉(原視窗被替代):Response.Redirect("newpage.aspx"); 2. 利用url地址打開本地網頁或互聯網:Respose.Write("<script language=javascript>window. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...