EF Code-First - Thuộc tính key

Key Attribute trong Entity Framework

Thuộc tính Key (Key Attribute) có thể được áp dụng cho một thuộc tính trong lớp thực thể để biến nó thành thuộc tính khóa và cột tương ứng với cột khóa chính trong cơ sở dữ liệu.

Quy ước mặc định tạo một cột khóa chính cho một thuộc tính có tên là Id hoặc <Entity Class Name>Id. Thuộc tính Key ghi đè quy ước mặc định này.

using System.ComponentModel.DataAnnotations;

public class Student
{
    [Key]
    public int StudentKey { get; set; }
    public string StudentName { get; set; }
}

Như bạn có thể thấy trong ví dụ trên, thuộc tính Key được áp dụng cho thuộc tính StudentKey của lớp thực thể Student.

Điều này sẽ ghi đè các quy ước mặc định và tạo một cột khóa chính là StudentKey trong bảng Students trong cơ sở dữ liệu như dưới đây.

data annotations key attribute

Thuộc tính Key có thể được áp dụng cho một thuộc tính của bất kỳ kiểu dữ liệu nguyên thủy nào ngoại trừ kiểu số nguyên không dấu.

Key Attribute trong EF 6:

Trong EF 6, thuộc tính Key cùng với thuộc tính Column có thể được áp dụng cho nhiều thuộc tính của một lớp thực thể sẽ tạo các cột khóa chính tổng hợp trong cơ sở dữ liệu.

using System.ComponentModel.DataAnnotations;

public class Student
{
    [Key]
    [Column(Order=1)]
    public int StudentKey { get; set; }
     
    [Key]
    [Column(Order=2)]
    public int AdmissionNum { get; set; }
     
    public string StudentName { get; set; }
}

Đoạn mã trên tạo các cột khóa chính tổng hợp StudentKeyAdmissionNum trong bảng Students như dưới đây.

data annotations key attribute

Lưu ý: Trong EF 6, thuộc tính Key tạo khóa chính là một cột identity khi được áp dụng cho một thuộc tính kiểu số nguyên. Khóa tổng hợp không tạo cột identity cho thuộc tính kiểu số nguyên.