實體框架 - 模型優先方法



在本章中,讓我們學習如何使用稱為“模型優先”的工作流在設計器中建立實體資料模型。

  • 當您開始一個數據庫甚至還不存在的新專案時,模型優先方法非常有用。

  • 該模型儲存在 EDMX 檔案中,可以在實體框架設計器中檢視和編輯。

  • 在模型優先方法中,您在實體框架設計器中定義模型,然後生成 SQL,這將建立與您的模型匹配的資料庫模式,然後您執行 SQL 以在您的資料庫中建立模式。

  • 您在應用程式中互動的類會自動從 EDMX 檔案生成。

以下是使用模型優先方法建立新的控制檯專案的簡單示例。

步驟 1 - 開啟 Visual Studio 並選擇檔案 → 新建 → 專案

Console Project

步驟 2 - 從左側窗格中選擇已安裝 → 模板 → Visual C# → Windows,然後在中間窗格中選擇控制檯應用程式。

步驟 3 - 在“名稱”欄位中輸入 EFModelFirstDemo。

步驟 4 - 要建立模型,首先右鍵單擊解決方案資源管理器中的控制檯專案,然後選擇新增 → 新建項…

Model

將開啟以下對話方塊。

Add New

步驟 5 - 從中間窗格中選擇 ADO.NET 實體資料模型,並在“名稱”欄位中輸入 ModelFirstDemoDB。

步驟 6 - 單擊“新增”按鈕,這將啟動實體資料模型嚮導對話方塊。

Model Wizard Dialog

步驟 7 - 選擇“空 EF 設計器模型”,然後單擊“下一步”按鈕。實體框架設計器將開啟一個空白模型。現在我們可以開始向模型中新增實體、屬性和關聯。

步驟 8 - 右鍵單擊設計圖面,然後選擇“屬性”。在“屬性”視窗中,將“實體容器名稱”更改為 ModelFirstDemoDBContext。

Design Surface

步驟 9 - 右鍵單擊設計圖面,然後選擇新增新建 → 實體…

Add New Entity

將開啟“新增實體”對話方塊,如下圖所示。

Entity Dialog

步驟 10 - 輸入 Student 作為實體名稱,Student Id 作為屬性名稱,然後單擊“確定”。

Student

步驟 11 - 右鍵單擊設計圖面上的新實體,然後選擇新增新建 → 標量屬性,輸入 Name 作為屬性的名稱。

New Entity

步驟 12 - 輸入 FirstName,然後新增另外兩個標量屬性,例如 LastName 和 EnrollmentDate。

Scalar Properties

步驟 13 - 透過遵循上述所有步驟新增另外兩個實體 Course 和 Enrollment,並新增一些標量屬性,如下所示。

Visual Designer

步驟 14 - 我們在 Visual Designer 中有三個實體,讓我們在它們之間新增一些關聯或關係。

步驟 15 - 右鍵單擊設計圖面,然後選擇新增新建 → 關聯…

Add Association

步驟 16 - 使關係的一端指向 Student,其多重性為一,另一端指向 Enrollment,其多重性為多。

Multiplicity Of One

步驟 17 - 這意味著一個 Student 有多個 Enrollments,而 Enrollment 屬於一個 Student。

步驟 18 - 確保選中“向'Post'實體新增外部索引鍵屬性”複選框,然後單擊“確定”。

步驟 19 - 同樣,在 Course 和 Enrollment 之間新增另一個關聯。

Course And Enrollment

步驟 20 - 在實體之間新增關聯後,您的資料模型將如下螢幕所示。

Data Model

現在,我們有一個簡單的模型,可以從中生成資料庫並用於讀取和寫入資料。讓我們繼續生成資料庫。

步驟 1 - 右鍵單擊設計圖面,然後選擇從模型生成資料庫…

Database From Model

步驟 2 - 您可以選擇現有資料庫,也可以透過單擊“新建連線…”來建立新的連線。

Generate Database

步驟 3 - 要建立新的資料庫,請單擊“新建連線…”

Connection Properties

步驟 4 - 輸入伺服器名稱和資料庫名稱。

Server And Database

步驟 5 - 單擊“下一步”。

Server And Database 1

步驟 6 - 單擊“完成”。這將在專案中新增一個 *.edmx.sql 檔案。您可以透過開啟 .sql 檔案,然後右鍵單擊並選擇“執行”來在 Visual Studio 中執行 DDL 指令碼。

DDL Scripts

步驟 7 - 將顯示以下對話方塊以連線到資料庫。

Connect To Database

步驟 8 - 成功執行後,您將看到以下訊息。

Successful Execution

步驟 9 - 轉到伺服器資源管理器,您將看到資料庫已建立,其中包含三個指定的表。

Database Created

接下來,我們需要交換我們的模型以生成使用 DbContext API 的程式碼。

步驟 1 - 右鍵單擊 EF 設計器中模型的空白處,然後選擇新增程式碼生成項…

EF Designer

您將看到以下“新增新建項”對話方塊開啟。

Dialog Open

步驟 2 - 在中間窗格中選擇 EF 6.x DbContext 生成器,並在“名稱”欄位中輸入 ModelFirstDemoModel。

步驟 3 - 您將在解決方案資源管理器中看到生成了 ModelFirstDemoModel.Context.tt 和 ModelFirstDemoModel.tt 模板。

Template Generated

ModelFirstDemoModel.Context 生成 DbCcontext 和您可以返回並用於查詢的物件集,例如上下文、Students 和 Courses 等。

另一個模板處理所有型別 Student、Courses 等。以下是 Student 類,它是從實體模型自動生成的。

CSharp Code

以下是 C# 程式碼,其中一些資料從資料庫中輸入和檢索。

using System;
using System.Linq;

namespace EFModelFirstDemo {

   class Program {

      static void Main(string[] args) {

         using (var db = new ModelFirstDemoDBContext()) {

            // Create and save a new Student

            Console.Write("Enter a name for a new Student: ");
            var firstName = Console.ReadLine();

            var student = new Student {
               StudentID = 1,
               FirstName = firstName
            };
				
            db.Students.Add(student);
            db.SaveChanges();
				
            var query = from b in db.Students
               orderby b.FirstName select b;

            Console.WriteLine("All student in the database:");

            foreach (var item in query) {
               Console.WriteLine(item.FirstName);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
         }
      }
   }
}

執行上述程式碼後,您將收到以下輸出:

Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...

我們建議您逐步執行上述示例,以便更好地理解。

廣告
© . All rights reserved.