Cấu hình trong Entity Framework Core

Cấu hình cho phép bạn ghi đè các quy ước mặc định của Entity Framework Core đối với ánh xạ các thực thể, các thuộc tính và mối quan hệ của chúng với cơ sở dữ liệu quan hệ.

Cấu hình có thể được áp dụng theo hai cách; sử dụng attribute cho các lớp và thuộc tính hoặc bằng cách sử dụng Fluent API.

Attribute

Attribute được sử dụng để thêm siêu dữ liệu vào các lớp, thuộc tính, phương thức, v.v. trong .NET Framework.

Chúng được áp dụng cho lớp hoặc thuộc tính đích bằng cách đặt chúng trong dấu ngoặc vuông (dấu ngoặc nhọn nếu sử dụng VB.NET) ngay trước lớp hoặc thuộc tính như sau:

[MyClassAttribute]
public class MyClass
{
    [MyPropertyAttribute]
    public int MyProperty { get; set; }
    
    //...
}

Bạn có thể áp dụng nhiều thuộc tính theo một trong hai cách - riêng biệt:

[MyFirstAttribute]
[MySecondAttribute]
[MyThirdAttribute]
public int MyProperty { get; set; }
//...

hoặc dưới dạng danh sách được phân tách bằng dấu phẩy:

[MyFirstAttribute, MySecondAttribute, MyThirdAttribute]
public int MyProperty { get; set; }
//...

Các attribute được Entity Framework Core sử dụng nằm trong namespace System.ComponentModel.DataAnnotations.SchemaSystem.ComponentModel.DataAnnotations. Attribute thường được gọi là Chú thích dữ liệu (Data Annotations).

Danh sách attribute trong namespace System.ComponentModel.DataAnnotations.Schema:

Attribute Mô tả
Table Bảng cơ sở dữ liệu và / hoặc lược đồ mà một lớp được ánh xạ tới.
Column Cột cơ sở dữ liệu mà thuộc tính được ánh xạ tới.
ForeignKey Chỉ định thuộc tính được sử dụng làm khóa ngoại trong một mối quan hệ.
DatabaseGenerated Chỉ định cách cơ sở dữ liệu tạo ra các giá trị cho một thuộc tính.
NotMapped Không ánh xạ các thuộc tính hoặc lớp vào cơ sở dữ liệu.
InverseProperty Chỉ định nghịch đảo của thuộc tính điều hướng.
ComplexType Biểu thị rằng lớp là một kiểu phức tạp. * Hiện không được triển khai trong EF Core.

Danh sách attribute trong namespace System.ComponentModel.DataAnnotations:

Attribute Mô tả
Key Xác định một hoặc nhiều thuộc tính làm khóa.
Timestamp Chỉ định kiểu dữ liệu của cột cơ sở dữ liệu là rowversion
ConcurrencyCheck Chỉ định rằng thuộc tính được bao gồm trong kiểm tra đồng thời
Required Chỉ định rằng giá trị của thuộc tính là bắt buộc
MaxLength Thiết lập độ dài tối đa cho phép của giá trị thuộc tính (chuỗi hoặc mảng)
StringLength Thiết lập độ dài tối đa cho phép của giá trị thuộc tính (chuỗi hoặc mảng)

Ưu điểm của Attribute

  • Attribute được áp dụng trực tiếp cho mô hình miền, vì vậy có thể dễ dàng xem mô hình được cấu hình như thế nào chỉ bằng cách kiểm tra các lớp.
  • Một số attribute, chẳng hạn như RequiredStringLength được tận dụng bởi các framework ứng dụng client như ASP.NET MVC để cung cấp xác thực trên giao diện người dùng dựa trên cấu hình được chỉ định.

Nhược điểm của Attribute

Attribute chú thích dữ liệu chỉ có thể cung cấp một tập hợp con các tùy chọn cấu hình. Cũng có thể cần phải sử dụng Fluent API để cung cấp một số cấu hình dẫn đến việc cấu hình được thực hiện ở nhiều nơi.

Fluent API

Cấu hình được áp dụng cho các thực thể hoặc thuộc tính của chúng thông qua chuỗi các phương thức mở rộng, là đặc điểm dễ dàng nhận ra của Fluent API.

Ưu điểm của Fluent API

  • Fluent API cung cấp phạm vi cấu hình đầy đủ hơn attribute.
  • Cấu hình có thể được đặt ở một nơi, cách xa các lớp mô hình.

Nhược điểm của Fluent API

Thực sự, không có bất kỳ nhược điểm nào khi sử dụng Fluent API.

Những điểm cần nhớ về cấu hình trong Entity Framework Core

  1. Cấu hình cho phép ghi đè các quy ước mặc định của Entity Framework Core.
  2. Có thể áp dụng cấu hình bằng cách sử dụng attribute cho các lớp và thuộc tính hoặc bằng cách sử dụng Fluent API.
  3. Attribute được Entity Framework Core sử dụng để cấu hình nằm trong namespace System.ComponentModel.DataAnnotations.SchemaSystem.ComponentModel.DataAnnotations.
  4. Cấu hình sử dụng Fluent API cung cấp phạm vi cấu hình đầy đủ hơn attribute.
Entity Framework Core
Bài Viết Liên Quan:
Bộ chuyển đổi giá trị của Entity Framework Core 5
Trung Nguyen 12/11/2021
Bộ chuyển đổi giá trị của Entity Framework Core 5

Bài viết này sẽ giúp bạn tìm hiểu về bộ chuyển đổi giá trị - một trong những cải tiến mạnh mẽ của Entity Framework Core 5.

Truy vấn SQL thô với Entity Framework Core 5
Trung Nguyen 11/11/2021
Truy vấn SQL thô với Entity Framework Core 5

Trong bài viết này, chúng ta sẽ khám phá cách làm việc với các tính năng của Entity Framework Core 5 (EF Core) để thực thi truy vấn SQL thô.

Cách thêm view vào DbContext trong Entity Framework Core
Trung Nguyen 07/11/2021
Cách thêm view vào DbContext trong Entity Framework Core

Với EF Core 5, chúng ta có thể thêm view vào trong DbContext và tạo view trong database bằng cách sử dụng cơ chế chuyển đổi cơ sở dữ liệu tích hợp sẵn.

Mô hình hóa các mối quan hệ SQL trong EF Core
Trung Nguyen 03/11/2021
Mô hình hóa các mối quan hệ SQL trong EF Core

Bài viết này sẽ khám phá các mối quan hệ trong cơ sở dữ liệu quan hệ và cách mô hình hóa các mối quan hệ đó bằng cách tiếp cận Code First trong EF Core.