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:
ConnectionString cho Entity Framework Core từ A-Z
Trung Nguyen 15/10/2021
ConnectionString cho Entity Framework Core từ A-Z

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách thiết lập các chuỗi kết nối cho SQL Server, Azure SQL, SQLite, PostgreSQL, MySQL và MariaDB.

Các quy ước trong Entity Framework Core
Trung Nguyen 03/04/2021
Các quy ước trong Entity Framework Core

Bạn sẽ tìm hiểu các quy ước được tính hợp sẵn trong Entity Framework Core để tạo khóa chính, khóa ngoại, bảng, lược đồ, cột, kiểu dữ liệu, index ...

Quản lý mối quan hệ Một - Nhiều trong Entity Framework Core
Trung Nguyen 03/04/2021
Quản lý mối quan hệ Một - Nhiều trong Entity Framework Core

Trong hướng dẫn này, bạn sẽ tìm hiểu cách tạo, sửa đổi và xóa mối quan hệ một - nhiều trong Entity Framework Core.

Giới thiệu về các mối quan hệ trong Entity Framework Core
Trung Nguyen 03/04/2021
Giới thiệu về các mối quan hệ trong Entity Framework Core

Trong hướng dẫn này, bạn sẽ tìm hiều về các mối quan hệ một - nhiều, nhiều - nhiều và một - một trong Entity Framework Core.