- vừa được xem lúc

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

0 0 27

Người đăng: LongNguyen

Theo Viblo Asia

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

1. Nhắc lại kiến 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ữ dữ liệu trong database thông qua việc ánh xạ database thành các objects tương ứng trong code.

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

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

  • Code first là cách tiếp cận dựa vào việc tạo các đối tượng (domain classes) bằng code C# trước. Sau đó Entity Framework sẽ tạo cơ sở dữ 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#.

Chi tiết

  • Create models and DBContext class.

  • Run command line in package manager console để generate database. Trong Visual Studio, chọn menu Tools -> NuGet Package Manger -> Package Manger Console. Chạy lệnh bên 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 dữ liệu từ c# sang Sql server

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

5. Update database

  • Sau khi 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ó mối quan hệ

  • Mối quan hệ một - một
  • Mối quan hệ nhiều - nhiều (tạo table trung gian)
  • Mối quan hệ một - nhiều

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

7. Linq to entities

  • Sử dụng Linq to entities để truy vấn dữ liệu.

  • Sử dụng sql profiler để xem câu query chạy bên dưới khi dùng linq to entities

8. Eager loading trong EF core

  • Eager loading cho phép khi query dữ 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()

9. Lazy loading trong EF core

  • Lazy loading cho phép trì hoãn việc tải các dữ liệu liên quan, cho đến khi bạn yêu cầu.

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

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

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

  1. Cài đặt package Microsoft.EntityFrameworkCore.Proxies
  2. Config add lazy loading
  3. Sử dụng thuộc tính Virtual cho các thuộc tính dữ liệu có quan hệ.

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

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

11. Explicit loading EF Core

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

12. Câu hỏi

  • Entity framework core là gì? Phiên bản hiện tại mới 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 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:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Lộ trình học C# .NET Core(5, 6)

Chào mọi người,. Nhân dịp cuối tuần mình sẽ chia sẻ về lộ trình học C#, .

0 0 185

- vừa được xem lúc

Phần 1: Redis cho .NET Developer

Chào mọi người,. Hôm này mình sẽ giới thiệu tới mọi người cách sử dụng Redis trong .

0 0 79

- vừa được xem lúc

Demo đồ án học tập - website bán hàng .NET Core MVC

Chào mọi người,. Tiếp theo phần 1 lộ trình học C#, .NET:. https://viblo.

0 0 36

- vừa được xem lúc

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

1. Giao tiếp C# với database và các nguồn dữ liệu khác. . .

0 0 34

- vừa được xem lúc

Tổng quan về .NET (5, 6)

1. .NET Framework là gì. Có thể xây dựng ứng dụng website, winform, webform, web service, wpf bằng .

0 0 36

- vừa được xem lúc

Tổng quan về MVC API trong .NET 6

1. Mô hình MVC. . .

0 0 30