[Phần 2] Tổng quan về Entity framework core

Tiếp tục từ Phần 1

1. Tóm lại kiến thức từ phần 1

  • Entity Framework Core là một framework Object Relational Mapping (ORM) giúp việc truy xuất và lưu trữ dữ liệu trong database trở nên đơn giản thông qua ánh xạ từ database sang các đối tượng tương ứng trong code.

image.png

  • Các phương pháp tiếp cận trong Entity Framework Core:

2. Sử dụng EF Core theo hướng Code First

  • Code first là cách tiếp cận xây dựng các đối tượng (domain classes) bằng việc viết mã C# trước. Sau đó, Entity Framework sẽ tạo cơ sở dữ liệu dựa trên mã c# đã viết.

  • Các bước tạo cơ sở dữ liệu bằng EF Core code first:

  1. Thêm EF Core DB provider (Microsoft.EntityFrameworkCore.SqlServer)
  2. Thêm EF Core tools (Entity Framework Core Tools)
  3. Tạo các model và lớp DBContext
  4. Chạy dòng lệnh trong Package Manager Console để tạo cơ sở dữ liệu từ mã c#
Có Thể Bạn Quan Tâm :   NganHangAZ.com

Chi tiết

  • Tạo các model và lớp DBContext. image.png

image.png

image.png

  • Chạy dòng lệnh trong Package Manager Console để tạo cơ sở dữ liệu. Trong Visual Studio, chọn menu Tools -> NuGet Package Manger -> Package Manger Console. Chạy các lệnh sau:
  • Tạo script: add-migration migrationScriptName
  • Chạy script để cập nhật vào cơ sở dữ liệu: update-database -verbose
  • Ví dụ:
    • add-migration EFCoreCodeFirstDB
    • update-database -verbose

3. Ánh xạ kiểu dữ liệu từ c# sang Sql server

4. Sử dụng Data Annotation Attributes để chú thích dữ liệu

image.png

5. Cập nhật cơ sở dữ liệu

  • Sau khi chỉnh sửa model hoặc dbcontext để cập nhật cơ sở dữ liệu, chúng ta chạy các lệnh sau:
  • Tạo script: add-migration migrationScriptName
  • Chạy script để cập nhật vào cơ sở dữ liệu: update-database -verbose
  • Ví dụ:
    • add-migration editLengthOfColumn
    • update-database -verbose
Có Thể Bạn Quan Tâm :   Bị liệu là gì? Bị liệu có phái là một dấu hiệu tâm thần?

6. Tạo các bảng có quan hệ

  • Quan hệ một – một
  • Quan hệ nhiều – nhiều (tạo bảng trung gian)
  • Quan hệ một – nhiều

Ví dụ về quan hệ một – nhiều giữa 2 bảng

image.png

image.png

7. Linq to entities

  • Sử dụng Linq to entities để truy vấn dữ liệu. image.png
  • Sử dụng sql profiler để xem các câu truy vấn được thực hiện khi sử dụng linq to entities. image.png

8. Eager loading trong EF core

  • Eager loading cho phép chúng ta tải các entity liên quan cùng với câu truy vấn chính, mà không cần thực hiện một câu truy vấn riêng biệt.
  • EF Core cung cấp phương thức Include() image.png

9. Lazy loading trong EF core

  • Lazy loading cho phép tải các dữ liệu liên quan khi chúng được yêu cầu.
  • Lazy loading hoạt động ngược lại với Eager loading (tải hết).
  • Có 2 cách sử dụng lazy loading:

Sử dụng Proxies (gói Microsoft.EntityFrameworkCore.Proxies)

  1. Cài đặt gói Microsoft.EntityFrameworkCore.Proxies
  2. Cấu hình để sử dụng lazy loading
  3. Sử dụng thuộc tính Virtual cho các thuộc tính liên quan.

image.png

10. Mẫu thiết kế Proxy (đọc thêm)

image.png

https://refactoring.guru/design-patterns/proxy

Có Thể Bạn Quan Tâm :   Giá trị trung bình (Mean) là gì? Trung bình số học và Trung bình hình học

image.png

11. Explicit loading trong EF Core

  • Explicit loading là cơ chế tải dữ liệu liên quan trong EF Core. Nó hoạt động giống như lazy loading, tuy nhiên dữ liệu liên quan được tải sau khi dữ liệu chính đã được tải. Quá trình này không tự động mà phải được gọi.
  • Sử dụng phương thức Load() để tải các entity liên quan.
  • Sử dụng phương thức Query() để viết linq to entities lấy các đối tượng liên quan.

image.png

12. Câu hỏi

  • Entity Framework Core là gì? Phiên bản hiện tại mới nhất là gì?
  • Ưu điểm của Entity Framework Core là gì?
  • So sánh Entity Framework Core với Entity Framework?
  • Phân biệt Code First và Database First trong EF Core?
  • Phân biệt Eager loading, Lazy loading và Explicit loading?

12. Bài tập về nhà

  • Tạo cơ sở dữ liệu Blog gồm 2 bảng Post và Category với quan hệ 1-n.
  • Cấu hình Lazy loading sử dụng gói Proxy.
  • Ôn lại và thực hành truy vấn dữ liệu bằng linq và các thao tác chỉnh sửa dữ liệu vào db (add, update, delete)

Tham khảo:

Back to top button