EF Code-First - Chiến lược kế thừa
Chiến lược kế thừa trong Code First
Bạn có thể thiết kế các lớp thực thể của mình bằng cách sử dụng tính kế thừa trong C#.
Trong lập trình hướng đối tượng, các lớp có mối quan hệ "has a" và "is a", trong khi đó mô hình quan hệ dựa trên SQL chỉ có mối quan hệ "has a" giữa các bảng.
Hệ quản trị cơ sở dữ liệu SQL không hỗ trợ mối quan hệ "is a". Vì vậy, làm thế nào bạn có thể ánh xạ các lớp thực thể có mối quan hệ "is a" vào cơ sở dữ liệu quan hệ?
Dưới đây là ba cách tiếp cận khác nhau để ánh xạ kế thừa vào cơ sở dữ liệu trong Code First:
- Table per Hierarchy (TPH): Cách tiếp cận này đề nghị tạo một bảng chung cho toàn bộ các lớp trong phân cấp kế thừa. Bảng này có một cột để phân biệt giữa các lớp con. Đây là một chiến lược ánh xạ kế thừa mặc định trong Entity Framework.
- Table per Type (TPT): Cách tiếp cận này đề nghị tạo mỗi bảng cho từng lớp trong phân cấp kế thừa (tạo bảng cho cả lớp cha và lớp con).
- Table per Concrete Class (TPC): Cách tiếp cận này đề nghị tạo mỗi bảng cho từng lớp con trong phân cấp kế thừa, nhưng không tạo bảng cho lớp cha. Vì vậy các thuộc tính của lớp cha sẽ là một phần của mỗi bảng của lớp con.
Xem chi tiết ba cách tiếp cạn để anh xạ kế thừa vào cơ sở dữ liệu trong Code First: