Trong cơ sở dữ liệu quan hệ, mối quan hệ là một liên kết tồn tại giữa các bảng của cơ sở dữ liệu quan hệ thông qua các khóa ngoại.
Khóa ngoại (Foreign Key) là một cột hoặc tổ hợp các cột được sử dụng để thiết lập và thực thi một liên kết giữa dữ liệu trong hai bảng. Sơ đồ sau có chứa ba bảng.
Trong sơ đồ trên, bạn có thể thấy một số loại liên kết / mối quan hệ giữa các bảng. Có ba loại mối quan hệ giữa các bảng và chúng khác nhau tùy thuộc vào cách định nghĩa các cột liên quan.
Trong Entity Framework, các mối quan hệ này cũng có thể được tạo bằng mã. Sau đây là một ví dụ về các lớp Student và Enrollment được liên kết với một quan hệ một-nhiều.
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
public class Enrollment
{
public int EnrollmentID { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public Grade? Grade { get; set; }
public virtual Course Course { get; set; }
public virtual Student Student { get; set; }
}
Trong đoạn mã trên, bạn có thể thấy rằng lớp Student chứa tập hợp Enrollment, nhưng lớp Enrollment có một đối tượng Student duy nhất.
Trong mối quan hệ nhiều-nhiều, một bản ghi trong bảng A có thể có nhiều liên kết tới các bản ghi trong bảng B và ngược lại.
Đoạn mã sau chứa lớp Course và hai lớp trên, tức là Student và Enrollment.
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
Bạn có thể thấy rằng cả lớp Course và lớp Student đều có một tập hợp các đối tượng Enrollment, điều này tạo ra mối quan hệ nhiều-nhiều thông qua lớp Enrollment.
Loại mối quan hệ này không phổ biến vì hầu hết thông tin liên quan theo cách này có thể đưa vào trong cùng một bảng. Bạn có thể sử dụng mối quan hệ một-một trong những trường hợp sau:
Đoạn mã sau đây sẽ thêm một tên lớp StudentProfile chứa thông tin id, email và password của sinh viên.
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
public virtual StudentProfile StudentProfile { get; set; }
}
public class StudentProfile
{
public StudentProfile()
{}
public int ID { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public virtual Student Student { get; set; }
}
Bạn có thể thấy rằng lớp thực thể Student chứa thuộc tính điều hướng StudentProfile và lớp StudentProfile cũng chứa thuộc tính điều hướng Student.
Mỗi sinh viên chỉ có một email và mật khẩu để đăng nhập. Những thông tin này có thể được thêm vào bảng Student nhưng vì lý do bảo mật, nó được tách ra một bảng khác.
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.