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

Chúng tôi rất vui mừng được chia sẻ kiến thức sâu sắc về từ khóa Entity framework code first la gi và hi vọng rằng nó sẽ hữu ích cho các bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và chọn lọc từ khóa phù hợp, kèm theo các chiến lược và công cụ hữu ích. Hi vọng rằng thông tin chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật kiến thức mới nhất.

Tiếp nối phần 1: https://viblo.asia/p/phan-1-tong-quan-ve-entity-framework-core-4dbZNQNaKYM

Bạn Đang Xem: [Phần 2] Tổng quan về Entity framework core

1. Nhắc lại tri thức phần 1

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

image.png

  • Các hướng tiếp cận trong EntityFramework Core:

2. Sử dụng EF Core theo phía Code First

  • Code first là cách tiếp cận dựa vào việc tạo các đối tượng người sử dụng (domain classes) bằng code C# trước. Sau đó Entity Framework sẽ tạo cơ sở tài liệu từ code c#.

  • Các bước tạo database bằng EF Core code first:

  1. Install EF Core DB provider (Microsoft.EntityFrameworkCore.SqlServer)
  2. Install EF Core tools (Entity Framework Core Tools)
  3. Create models and DBContext class
  4. Run command line in package manager console để tạo database từ code c#.

Cụ thể chi tiết

  • Create models and DBContext class. image.png

image.png

image.png

  • Run command line in package manager console để generate database. Trong Visual Studio, chọn thực đơn Tools -> NuGet Package Manger -> Package Manger Console. Chạy lệnh phía dưới:
  • Tạo script: add-migration migrationScriptName
  • Chạy script để update vào database: update-database -verbose
  • Ví dụ:
    • add-migration EFCoreCodeFirstDB
    • update-database -verbose

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

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

  • Dùng làm set các tính chất liên quan đến database như key, column name, table name, length, type… khi tạo database https://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx

Xem Thêm : Wibu (Weeaboo) là gì? Hãy cẩn thận, bạn có thể đang nhầm lẫn wibu và otaku!

image.png

5. Update database

  • Sau khoản thời gian chỉnh sửa model hoặc dbcontext để update database ta chạy lệnh dưới:
  • Tạo script: add-migration migrationScriptName
  • Chạy script để update vào database: update-database -verbose
  • Ví dụ:
    • add-migration editLengthOfColumn
    • update-database -verbose

6. Tạo các table có quan hệ

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

Ví dụ quan hệ một – nhiều giữa 2 table

image.png

image.png

7. Linq to entities

  • Sử dụng Linq to entities để truy vấn tài liệu. image.png

  • Sử dụng sql profiler để xem câu query chạy phía dưới khi sử dụng linq to entities image.png

8. Eager loading trong EF core

  • Eager loading được chấp nhận khi query tài liệu từ một Entity và ta có thể tải các entity liên quan như một phần của câu query, mà không phải thực hiện một câu query riêng.
  • EF Core cung cấp phương thức InClude() image.png

9. Lazy loading trong EF core

  • Lazy loading được chấp nhận trì hoãn việc tải các tài liệu liên quan, cho tới lúc bạn yêu cầu.

  • Lazy loading đối lập hoàn toàn với Eager loading (tải toàn bộ).

  • Xem Thêm : Here you go/ There you go/ Here we go/ There we go

    Có 2 cách sử dụng lazy loading:

    • Sử dụng Proxies (package Microsoft.EntityFrameworkCore.Proxies)
    • Sử dụng interface ILazyLoader (https://docs.microsoft.com/en-us/ef/core/querying/related-data/lazy )

Sử dụng Proxies (package Microsoft.EntityFrameworkCore.Proxies)

  1. Thiết lập cấu hình package Microsoft.EntityFrameworkCore.Proxies
  2. Config add lazy loading
  3. Sử dụng tính chất Virtual cho những tính chất tài liệu có quan hệ.

image.png

10. Proxy design pattern (đọc thêm)

image.png

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

image.png

11. Explicit loading EF Core

  • Explicit loading là cơ chế tải tài liệu liên quan trong EF core. Hoạt động giống lazy loading, tài liệu liên quan được tải riêng biệt sau thời điểm tải tài liệu chính. Tuy nhiên quá trình này sẽ không diễn ra tự động hóa mà phải gọi phương thức tải tài liệu.
  • 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ọc các đối tượng người sử dụng liên quan.

image.png

12. Thắc mắc

  • Entity framework core là gì? Phiên bản ngày nay tiên tiến nhất là bao nhiêu?
  • Ư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 database Blog gồm 2 table Post và Category có quan hệ 1-n.
  • Cấu hình Lazy Loading sử dụng Proxy package.
  • Xem lại và thực hiện truy vấn tài liệu bằng linq và các thao tác chỉnh sửa tài liệu vào db (add, update, delete)

Tham khảo:

  • https://xuanthulab.net/ado-net-gioi-thieu-ado-net-va-ket-noi-sql-server-voi-sqlconnection.html
  • https://docs.microsoft.com/en-us/ef/efcore-and-ef6/
  • docs.microsoft.com/en-us/ef/core/what-is-new/roadmap
  • https://www.entityframeworktutorial.net/code-first/dataannotation-in-code-first.aspx
  • https://docs.microsoft.com/en-us/ef/core/querying/related-data/lazy
  • https://refactoring.guru/design-patterns/proxy
  • https://code-maze.com/entity-framework-core-series
  • https://www.learnentityframeworkcore.com/migrations/seeding

You May Also Like

About the Author: v1000