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

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

0 0 34

Người đăng: LongNguyen

Theo Viblo Asia

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

  • Sử dụng thư viện ADO.NET (ActiveX Data Object) là thư viện được xây dựng sẵn trong .NET cho phép ứng dụng kết nối với các nguồn dữ liệu khác nhau và thực hiện các hành động (Get, Add, Update, Delete) trên nguồn dữ liệu đó.

Ví dụ sử dụng ADO.NET để connect với database và đọc dữ liệu:

public class AdoNetCSharp { public void Run() { var connectionString = "Server=127.0.0.1; Initial Catalog=ADONETEXAMPLE; User ID=testado; Password=testado.net; Application Name=Test ADP.NET"; using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "Select * From Users"; var reader = command.ExecuteReader(); while (reader.Read()) { var sUserId = reader["UserId"].ToString(); var username = reader["Username"].ToString(); var password = reader["Password"].ToString(); var fullName = reader["Fullname"] != null ? reader["Fullname"].ToString() : string.Empty; var sState = reader["State"].ToString(); Console.WriteLine("{0}=={1}=={2}=={3}=={4}", sUserId, username, password, fullName, sState); } } } } }
  • Sử dụng các ORM như Entity Framework Core, Dapper...

2. ORM - Object Relational Mapping

  • ORM (Object Relational Mapping) là một kỹ thuật giúp ánh xạ cơ sở dữ liệu sang các đối tượng trong các ngôn ngữ lập trình: Java, C#, PHP....

Ví dụ:

  • Ánh xạ table Person, các column, kiểu dữ liệu trong database sang Class Person trong C#.

  • Một số ORM phổ biến:

    • C#: Entity Framework core, Dapper,...
    • Java: Hibernate
    • PHP: Propel or Doctrine
    • Python: the Django ORM or SQLAlchemy

3. So sánh ADO.NET và ORM

  • ADO.NET
    • Công nghệ đầu tiên của microsoft ra đời lâu, hiện nay ít project xài.
    • Khó sử dụng và phải có kiến thức về query database để viết query trong code C#.
    • Tốc độ nhanh do thực thi câu query trực tiếp. (Viết query or store procedure ở code C# => Dùng ADO.NET execute query đó, không cần phải qua tầng trung gian)
  • Entity Framework
    • Công nghệ mới, nhiều dự án hiện nay đang sử dụng.
    • Cú pháp dễ sử dụng + anh xạ được các object từ database sang code C# theo OOP nên code clear, đọc dễ hiểu.
    • Tốc độ không nhanh bằng ADO.NET do phải qua các tầng trung gian. (Viết code C# bằng Entity Framework => Tầng trung gian xử lý => Tạo ra câu query => Database thực thi)

Note: Để đo tốc độ ta có thể dùng: BenchMark trong .NET

Link: https://benchmarkdotnet.org/articles/overview.html

4. Entity framework core là gì?

5. Một số đặc điểm của Entity framework core

6. Entity framework core hỗ trợ các database nào?

  • Entity framework core hỗ trợ cho phép làm việc với nhiều loại database. Để làm việc với từng loại ta phải instal các database provider qua NuGet packages.
    • SQL Server (Microsoft.EntityFrameworkCore.SqlServer)
    • MySQL (MySql.Data.EntityFrameworkCore)
    • PostgreSQL
    • Oracle
    • SQLite (mobile)
    • SQL Server Compact
    • DB2
    • Firebird
    • Jet (Microsoft Access)
    • Azure Cosmos DB
    • In-memory (for testing) (Microsoft.EntityFrameworkCore.InMemory)

7. Install Entity Framework core

Nuget packet

8. Các hướng tiếp cận trong EntityFramework Core

  • Database first vs code first

9. Sử dụng EF Core theo hướng Database First

  1. Install EF Core DB provider (Microsoft.EntityFrameworkCore.SqlServer)
  2. Install EF Core tools (https://microsoft.entityframeworkcore.tools/)
  3. Create database
  4. Get connection string
  5. Run command line in package manager console

Install

    1. EF Core DB provider (Microsoft.EntityFrameworkCore.SqlServer)
    1. EF Core tools (Microsoft.EntityFrameworkCore.Tools)
    1. Create database
    1. Get connection string

    1. Run command line in package manager console

Trong Visual Studio, chọn menu Tools -> NuGet Package Manger -> Package Manger Console. Chạy lệnh bên dưới:

  • Scaffold-DbContext [-Connection] [-Provider] [-OutputDir]

Ví dụ: Scaffold-DbContext "Data Source=LONGNGUYENDH\SQLEXPRESS;Initial Catalog=EFCore;User ID=sa;Password=123;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

  • Kết quả:

10. Ánh xạ kiểu dữ liệu từ c# sang Sql server và ngược lại

11. DBContext class là gì?

  • Là một class của EntityFrameworkCore giúp query và quản lý các model (Entity) được ánh xạ từ DB.

    • Quản lý các connection tới Database
    • Quản lý model (entity) và mối quan hệ giữa chúng.
    • Query lấy dữ liệu từ database
    • Save dữ liệu xuống database
    • …..

Đọc thêm về class DBContext:https://docs.microsoft.com/en-us/ef/core/dbcontext-configuration/

12. DBSET là gì?

  • DBSet là một class đại diện cho một entity(model) trong database.
  • Ta có thể thực hiện các thao tác với DataSet:
    • Query dữ liệu
    • Thêm, xóa, sửa dữ liệu

13. Get dữ liệu (Sử dụng Linq to entities)

14. Bài tập về nhà:

  1. Thiết kế database cho trang Blog (Gợi ý gồm các table: Post, Category, User...)
  2. Thực hành sử dụng Entity Framework Core theo hướng Database First để tạo ra code C#.
  3. Viết function lấy danh sách toàn bộ bài viết. Bên ngoài gọi function và sử dụng foreach để in Name của bài post ra màn hình.
  4. Viết function lấy bài viết theo Id. Bên ngoài gọi function này và in Name + description ra màn hình.
  5. Viết function lấy danh sách toàn bộ bài viết bằng ADO.NET. Sử dụng tool BenchMark để so sánh tốc độ khi sử dụng Entity Framework Core và ADO.NET. (https://benchmarkdotnet.org/articles/overview.html)

15. 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 2] Tổng quan về Entity framework core

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.

0 0 27

- 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