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
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…
Hộp thoại Add New Item sẽ mở ra như dưới đây.
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.
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.
Bước 9 - Nhấp chuột phải vào giao diện thiết kế và chọn Add New → Entity…
Bước 9 - Nhấp chuột phải vào giao diện thiết kế và chọn Add New → Entity…
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.
Bước 12 - Nhập FirstName và sau đó thêm hai thuộc tính vô hướng khác như LastName và EnrollmentDate.
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.
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…
Bước 16 - Tạo mối quan hệ giữa Student và Enrollment.
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.
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ể.
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…
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…
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.
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.
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.
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…
Bạn sẽ thấy hộp thoại Add New Item sau đây mở ra.
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.tt
và ModelFirstDemoModel.tt
được tạo 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.tt
và ModelFirstDemoModel.tt
được tạo 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ế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.