Cột Discriminator
được sử dụng và bắt buộc trong các trường hợp thừa kế Table-Per-Hierarchy. Nếu bạn ví dụ có một mô hình như thế này ...
public abstract class BaseEntity
{
public int Id { get; set; }
//...
}
public class Post : BaseEntity
{
//...
}
public class OtherEntity : BaseEntity
{
//...
}
... và làm cho BaseEntity
một phần của mô hình, ví dụ bằng cách thêm một DbSet<BaseEntity>
đến bối cảnh có nguồn gốc của mình, Entity Framework sẽ lập bản đồ phân cấp lớp này bằng cách mặc định thành một bảng, nhưng giới thiệu một cột đặc biệt - Discriminator
- để phân biệt giữa các loại khác nhau (Post
hoặc OtherEntity
) được lưu trữ trong bảng này. Cột này được điền bằng tên của loại (một lần nữa là Post
hoặc OtherEntity
).
Cảm ơn câu trả lời hay. Tuy nhiên, mô hình của tôi không có nguồn gốc. Tại sao EF vẫn tạo ra sự phân biệt đối xử? – kasperhj
@lejon: Bạn có thể hiển thị mô hình trong câu hỏi của mình không? Tôi chưa bao giờ thấy một cột 'Discriminator' khác ngoài một ngữ cảnh thừa kế. Mã của tôi ở trên chỉ là một ví dụ. Bạn sẽ nhận được cùng một ví dụ nếu 'Post' chính nó là không có nguồn gốc, nhưng nếu có các thực thể khác có nguồn gốc từ' Post'. – Slauma
Tôi hiểu rồi! Một mô hình khác bắt nguồn từ Bài đăng. Cảm ơn bạn đã trả lời! – kasperhj