EF 6 - Model First trong EF 6

Model First trong Entity Framework

Trong phần này, chúng ta hãy tìm hiểu cách tạo mô hình dữ liệu thực thể trong trình thiết kế bằng cách sử dụng Model First.

  • Model First rất phù hợp khi bạn bắt đầu một dự án mới, khi chưa có cơ sở dữ liệu.
  • Mô hình được lưu trữ trong file EDMX và có thể được xem và chỉnh sửa trong trình thiết kế Entity Framework.
  • Trong Model First, bạn định nghĩa mô hình của mình trong trình thiết kế Entity Framework sau đó tạo tập lệnh SQL, nó sẽ tạo lược đồ cơ sở dữ liệu để khớp với mô hình của bạn và sau đó bạn thực thi tập lệnh SQL để tạo lược đồ trong cơ sở dữ liệu của bạn.
  • Các lớp mà bạn tương tác trong ứng dụng của bạn được tạo tự động từ file EDMX.

Sau đây là một ví dụ đơn giản về việc tạo một dự án Console mới bằng cách sử dụng phương pháp Model First.

Bước 1 - Mở Visual Studio và chọn File → New → Project

Tạo project console trong visual studio

Bước 2 - Chọn Installed → Templates → Visual C# → Windows từ khung bên trái và sau đó ở ngăn giữa, chọn Console Application.

Bước 3 - Đặt tên dự án là EFModelFirstDemo.

Bước 4 - Để tạo mô hình, trước tiên bạn nhấp chuột phải vào dự án và chọn Add → New Items…

Tạo model trong Model First

Hộp thoại Add New Item sẽ mở ra như dưới đây.

Tạo model trong Model First

Bước 5 - Chọn ADO.NET Entity Data Model từ ngăn giữa và đặt tên ModelFirstDemoDB.

Bước 6 - Nhấp vào nút Add sẽ khởi chạy hộp thoại Entity Data Model Wizard.

Tạo model trong Model First

Bước 7 - Chọn mô hình Empty EF Designer và nhấp vào nút Next. Entity Framework Designer mở ra với một mô hình trống. Bây giờ chúng ta có thể bắt đầu thêm các thực thể, thuộc tính và liên kết vào mô hình.

Bước 8 - Nhấp chuột phải vào giao diện thiết kế và chọn Properties. Trong cửa sổ Properties, thay đổi Entity Container Name thành ModelFirstDemoDBContext.

Tạo model trong Model First

Bước 9 - Nhấp chuột phải vào giao diện thiết kế và chọn Add New → Entity…

Tạo model trong Model First

Bước 9 - Nhấp chuột phải vào giao diện thiết kế và chọn Add New → Entity…

Tạo model trong Model First

Bước 11 - Nhấp chuột phải vào thực thể mới trên giao diện thiết kế và chọn Add New → Scalar Property, nhập Name làm tên của thuộc tính.

Tạo model trong Model First

Bước 12 - Nhập FirstName và sau đó thêm hai thuộc tính vô hướng khác như LastName và EnrollmentDate.

Tạo model trong Model First

Bước 13 - Thêm hai thực thể Course và Enrollment bằng cách làm theo tất cả các bước được đề cập ở trên và cũng thêm một số thuộc tính vô hướng như được hiển thị trong các bước sau.

Tạo model trong Model First

Bước 14 - Chúng tôi có ba thực thể trong Visual Designer, hãy thêm một số liên kết hoặc mối quan hệ giữa chúng.

Bước 15 - Nhấp chuột phải vào giao diện thiết kế và chọn Add New → Association…

Tạo model trong Model First

Bước 16 - Tạo mối quan hệ giữa Student và Enrollment.

Tạo model trong Model First

Bước 17 - Điều này có nghĩa là một Student có nhiều Enrollment và một Enrollment thuộc về một Student.

Bước 18 - Đừng quên đánh dấu vào ô Add foreign key properties to 'Enrollment' Entity và bấm OK.

Bước 19 - Tương tự, thêm một liên kết giữa Course và Enrollment.

Tạo model trong Model First

Bước 20 - Mô hình dữ liệu của bạn sẽ trông giống như hình dưới đây sau khi thêm liên kết giữa các thực thể.

Tạo model trong Model First


Bây giờ chúng ta có một mô hình đơn giản mà chúng ta có thể tạo cơ sở dữ liệu từ và sử dụng để đọc và ghi dữ liệu. Bây giờ chúng ta sẽ tiếp tục tạo cơ sở dữ liệu.

Bước 1 - Nhấp chuột phải vào giao diện thiết kế và chọn Generate Database from Model…

Tạo cơ sở dữ liệu từ model

Bước 2 - Bạn có thể chọn cơ sở dữ liệu có sẵn hoặc tạo kết nối mới bằng cách nhấp vào New Connection…

Tạo cơ sở dữ liệu từ model

Bước 3 - Để tạo Cơ sở dữ liệu mới, nhấp vào New Connection…

Bước 4 - Nhập tên máy chủ và tên cơ sở dữ liệu.

Bước 5 - Nhấn Next.

Bước 6 - Nhấp vào Finish. Việc này sẽ thêm file *.edmx.sql trong dự án. Bạn có thể thực thi các tập lệnh DDL trong Visual Studio bằng cách mở tệp .sql, sau đó nhấp chuột phải và chọn Execute.

Tạo cơ sở dữ liệu từ model

Bước 7 - Hộp thoại sau sẽ được hiển thị để kết nối với cơ sở dữ liệu.

Bước 8 - Khi thực hiện thành công, bạn sẽ thấy thông báo sau.

Tạo cơ sở dữ liệu từ model

Bước 9 - Chuyển đến Server Explorer, bạn sẽ thấy cơ sở dữ liệu được tạo với ba bảng được chỉ định.

Tạo cơ sở dữ liệu từ model


Tiếp theo, chúng ta cần tạo mã model sử dụng DbContext API.

Bước 1 - Nhấp chuột phải vào một vị trí trống trong mô hình của bạn trong Trình thiết kế EF và chọn Add Code Generation Item…

Tạo mã model sử dụng DbContext API

Bạn sẽ thấy hộp thoại Add New Item sau đây mở ra.

Tạo mã model sử dụng DbContext API

Bước 2 - Chọn EF 6.x DbContext Generator ở khung giữa và đặt tên là ModelFirstDemoModel.

Bước 3 - Bạn sẽ thấy ModelFirstDemoModel.Context.ttModelFirstDemoModel.tt được tạo trong Solution Explorer.

ModelFirstDemoModel.Context.tt và ModelFirstDemoModel.tt trong Solution Explorer

Bước 2 - Chọn EF 6.x DbContext Generator ở khung giữa và đặt tên là ModelFirstDemoModel.

Bước 3 - Bạn sẽ thấy ModelFirstDemoModel.Context.ttModelFirstDemoModel.tt được tạo trong Solution Explorer.

ModelFirstDemoModel.Context.tt và ModelFirstDemoModel.tt trong Solution Explorer

Đoạn mã C# dưới đây sẽ thêm và truy xuất thông tin Student từ ​​cơ sở dữ liệu.

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();
         }
      }
   }
}

Khi đoạn mã trên được thực thi, bạn sẽ nhận được đầu ra sau:

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

Chúng tôi khuyên bạn nên thực hiện ví dụ trên theo cách từng bước để hiểu rõ hơn


Nên sử dụng cách tiếp cận nào

Trong phần này, chúng ta sẽ xem xét nên sử dụng Code First, Model First hay Database First để tạo mô hình dữ liệu. Sau đây là một số hướng dẫn sẽ giúp bạn quyết định nên chọn cái nào.

Nên sử dụng cách tiếp cận nào

  • Nếu bạn đã có cơ sở dữ liệu thì Database First là lựa chọn tốt nhất dành cho bạn.
  • Nếu bạn muốn sử dụng Visual Designer cho một dự án hoàn toàn mới mà không có cơ sở dữ liệu, thì bạn nên sử dụng Model First.
  • Nếu bạn chỉ muốn làm việc với mã thì Code First là lựa chọn tốt nhất dành cho bạn.
  • Nếu bạn đã có sẵn các lớp, thì cách tốt nhất của bạn là sử dụng chúng với Code First.