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

Thuộc tính NotMapped trong Entity Framework

Thuộc tính NotMapped (NotMapped Attribute) có thể được áp dụng cho các thuộc tính của lớp thực thể mà chúng ta không muốn tạo các cột tương ứng trong cơ sở dữ liệu.

Theo mặc định, EF tạo một cột cho mỗi thuộc tính (phải có get; và set;) trong một lớp thực thể. Thuộc tính NotMapped ghi đè quy ước mặc định này.

Bạn có thể áp dụng thuộc tính NotMapped trên một hoặc nhiều thuộc tính mà bạn KHÔNG muốn tạo cột tương ứng trong bảng cơ sở dữ liệu.

Khai báo thuộc tính NotMaps: [NotMapped]

using System.ComponentModel.DataAnnotations.Schema;

public class Student
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }
        
    [NotMapped]
    public int Age { get; set; }
}

Trong ví dụ trên, thuộc tính NotMapped được áp dụng cho thuộc tính Age của lớp Student. Vì vậy, EF sẽ không tạo một cột để lưu trữ thông tin Age trong bảng db Students, như được hiển thị bên dưới.

dataannotations NotMapped attribute

Lưu ý: EF cũng không tạo cột cho thuộc tính không có getters hoặc setters (thuộc tính chỉ đọc hoặc chỉ ghi). Ví dụ, EF sẽ không tạo các cột cho các thuộc tính CityAge.
using System.ComponentModel.DataAnnotations;

public class Student
{
    private int _age = 0;

    public int StudentId { get; set; }
    public string StudentName { get; set; }
    public string City { get{ return StudentName;}  }
    public int Age { set{ _age = value;}  }
}