Entity Framework cho phép bạn truy vấn, thêm mới, cập nhật và xóa dữ liệu, sử dụng các đối tượng Common Language Runtime (CLR) được gọi là các thực thể. Entity Framework ánh xạ các thực thể và các mối quan hệ được xác định trong mô hình của bạn vào cơ sở dữ liệu. Nó cũng cung cấp các cơ sở để:
Lớp chính chịu trách nhiệm tương tác với dữ liệu dưới dạng đối tượng là System.Data.Entity.DbContext
.
DbContext API không được phát hành như một phần của .NET Framework. Để phát hành linh hoạt và thường xuyên hơn các tính năng mới cho Code First và DbContext API.
Nhóm Entity Framework phân phối EntityFramework.dll thông qua tính năng phân phối NuGet của Microsoft.
Cách được đề xuất để làm việc với Context là định nghĩa một lớp dẫn xuất từ lớp DbContext và tạo các thuộc tính DbSet đại diện cho các bộ sưu tập của các thực thể được chỉ định trong Context.
Nếu bạn đang làm việc với Entity Framework Designer (Database First), Context sẽ được tạo cho bạn. Nếu bạn đang làm việc với Code First, bạn sẽ thường tự tạo Context.
Đoạn mã sau đây là một ví dụ đơn giản cho thấy UniContext được dẫn xuất từ DbContext.
public class UniContext : DbContext
{
public UniContext() : base("UniContext")
{ }
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
}
Có bốn loại truy vấn bạn có thể sử dụng, chẳng hạn như:
Thêm một đối tượng mới với Entity Framework cũng đơn giản như việc xây dựng một thể hiện mới của đối tượng của bạn và đăng ký nó bằng phương thức Add
trên DbSet. Đoạn mã sau dành cho khi bạn muốn thêm một Student mới vào cơ sở dữ liệu.
private static void AddStudent()
{
using (var context = new UniContext())
{
var student = new Student
{
LastName = "Khan",
FirstMidName = "Ali",
EnrollmentDate = DateTime.Parse("2020-04-01")
};
context.Students.Add(student);
context.SaveChanges();
}
}
Cập nhật các đối tượng hiện có cũng đơn giản như cập nhật giá trị được gán cho (các) thuộc tính bạn muốn thay đổi và gọi SaveChanges
. Trong đoạn mã sau, LastName của Ali đã được đổi từ Khan thành Aslam.
private static void ChangeStudent()
{
using (var context = new UniContext())
{
var student = (from d in context.Students
where d.FirstMidName == "Ali"
select d).FirstOrDefault();
student.LastName = "Aslam";
context.SaveChanges();
}
}
Để xóa một thực thể bằng Entity Framework, bạn sử dụng phương thức Remove
trên DbSet. Phương thức Remove
có thể làm việc trên các thực thể hiện có và cả những thực thể mới được thêm vào mà chưa lưu vào cơ sở dữ liệu.
Gọi phương thức Remove
trên một thực thể mới được thêm nhưng chưa được lưu vào cơ sở dữ liệu sẽ hủy việc thêm thực thể đó. Thực thể được xóa khỏi trình theo dõi thay đổi và không còn được theo dõi bởi DbContext.
Gọi phương thức Remove
trên một thực thể hiện đang có thay đổi sẽ đăng ký thực thể để xóa trong lần gọi SaveChanges
tiếp theo.
Ví dụ sau đây cho thấy một trường hợp trong đó học sinh bị xóa khỏi cơ sở dữ liệu có tên là Ali.
private static void DeleteStudent()
{
using (var context = new UniContext())
{
var bay = (from d in context.Students
where d.FirstMidName == "Ali"
select d).FirstOrDefault();
context.Students.Remove(bay);
context.SaveChanges();
}
}
Bạn có thể xem thông tin của một hoặc nhiều thực thể tùy ý theo điều kiện bạn cung cấp. Trong đoạn mã sau sẽ có hai phương thức lấy thông tin Student theo Id và lấy danh sách Student theo tên.
private static Student GetStudentById(int id)
{
using (var context = new UniContext())
{
var student = (from d in context.Students
where d.ID == id
select d).FirstOrDefault();
return student;
}
}
private static List<Student> GetStudentsByName(string name)
{
using (var context = new UniContext())
{
var students = (from d in context.Students
where d.LastName == name
select d).ToList();
return students;
}
}
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
2 kịch bản lưu dữ liệu trong Entity Framework Core là kịch bản được kết nối và kịch bản ngắt kết nối.
Tạo ứng dụng .NET Core Console đầu tiên và cấu hình sử dụng Entity Framework Core.
Truy vấn trong Entity Framework Core có gì mới? Truy vấn trong EF Core khác EF ở những điểm nào.
Entity Framework Core toàn tập sẽ hướng dẫn bạn tất cả mọi thứ về Entity Framework Core.