Trang Designer – Thiết kế website – Mua bán theme giá rẻ, plugin giá rẻ – Dịch vụ thiết kế website giá rẻ chuyên nghiệp chuẩn SEO – Mua bán theme giá rẻ, plugin giá rẻ chính hãng 100% từ nhà cung cấp, hỗ trợ update trọn đời

Entity Framework (EF) là một Object-Relational Mapping (ORM) framework của Microsoft, cho phép bạn làm việc với cơ sở dữ liệu bằng cách sử dụng các đối tượng .NET thay vì phải viết SQL trực tiếp. EF giúp giảm thiểu việc viết mã và quản lý các thao tác truy xuất dữ liệu, từ đó tăng năng suất và giảm thiểu lỗi khi phát triển ứng dụng.
Tìm hiểu Entity Framework và sử dụng trong ASP.NET Core Web API
Tìm hiểu Entity Framework và sử dụng trong ASP.NET Core Web API

Các khái niệm cơ bản của Entity Framework

  • ORM (Object-Relational Mapping): EF giúp ánh xạ các bảng trong cơ sở dữ liệu thành các lớp (class) trong ứng dụng của bạn. Bạn có thể thao tác với dữ liệu dưới dạng các đối tượng (object) thay vì làm việc trực tiếp với SQL.
  • Code-First vs. Database-First:
    • Code-First: Bạn định nghĩa các mô hình dữ liệu (entities) và EF sẽ tạo ra cơ sở dữ liệu dựa trên các định nghĩa này. Đây là phương pháp linh hoạt và được ưa chuộng trong nhiều dự án mới.
    • Database-First: Bạn bắt đầu với cơ sở dữ liệu có sẵn và sử dụng các công cụ của EF để tạo ra các lớp (entity classes) từ cơ sở dữ liệu đó.

Cài đặt và cấu hình EF Core trong ASP.NET Core Web API

Cài đặt các package cần thiết:

Trong file dự án (.csproj), bạn cần thêm các package như sau:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools

Định nghĩa model (entity):

Ví dụ, tạo một lớp Product:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

Tạo DbContext:

Tạo lớp AppDbContext kế thừa từ DbContext để quản lý các entity:

using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options)
        : base(options)
    { }

    public DbSet<Product> Products { get; set; }
}

Cấu hình kết nối trong Program.cs hoặc Startup.cs:

Trong ASP.NET Core (phiên bản 6 trở lên, dùng Program.cs):

var builder = WebApplication.CreateBuilder(args);

// Đọc chuỗi kết nối từ appsettings.json
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

// Đăng ký DbContext với Dependency Injection
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(connectionString));

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();
app.UseAuthorization();

app.MapControllers();
app.Run();

Trong file appsettings.json, thêm chuỗi kết nối:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
  }
}

Tạo các API Controller sử dụng EF Core

Tạo một controller để thực hiện các thao tác CRUD trên Product. Ví dụ:

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    private readonly AppDbContext _context;

    public ProductsController(AppDbContext context)
    {
        _context = context;
    }

    // GET: api/Products
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Product>>> GetProducts()
    {
        return await _context.Products.ToListAsync();
    }

    // GET: api/Products/5
    [HttpGet("{id}")]
    public async Task<ActionResult<Product>> GetProduct(int id)
    {
        var product = await _context.Products.FindAsync(id);
        if (product == null)
            return NotFound();
        return product;
    }

    // POST: api/Products
    [HttpPost]
    public async Task<ActionResult<Product>> PostProduct(Product product)
    {
        _context.Products.Add(product);
        await _context.SaveChangesAsync();
        return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
    }

    // PUT: api/Products/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutProduct(int id, Product product)
    {
        if (id != product.Id)
            return BadRequest();

        _context.Entry(product).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!_context.Products.Any(e => e.Id == id))
                return NotFound();
            else
                throw;
        }
        return NoContent();
    }

    // DELETE: api/Products/5
    [HttpDelete("{id}")]
    public async Task<IActionResult> DeleteProduct(int id)
    {
        var product = await _context.Products.FindAsync(id);
        if (product == null)
            return NotFound();

        _context.Products.Remove(product);
        await _context.SaveChangesAsync();
        return NoContent();
    }
}

Sử dụng Migrations để tạo và cập nhật cơ sở dữ liệu

Sau khi cấu hình xong DbContext và các entity, bạn cần tạo migration và cập nhật cơ sở dữ liệu:

Tạo migration:

dotnet ef migrations add InitialCreate

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

dotnet ef database update

Migrations sẽ giúp bạn theo dõi và quản lý các thay đổi trong mô hình dữ liệu theo thời gian.

Ưu điểm khi sử dụng Entity Framework trong ASP.NET Core Web API

  • Tăng năng suất phát triển: Giảm thiểu việc viết SQL thủ công.
  • Bảo trì dễ dàng: Mô hình dữ liệu được định nghĩa trong code dễ dàng thay đổi và quản lý.
  • Tính trừu tượng: EF cung cấp một lớp trừu tượng giữa ứng dụng và cơ sở dữ liệu, giúp ứng dụng dễ dàng chuyển đổi giữa các hệ quản trị cơ sở dữ liệu khác nhau.
  • Hỗ trợ LINQ: Cho phép truy vấn dữ liệu theo kiểu LINQ, làm cho code trở nên dễ đọc và dễ bảo trì.

Kết luận

Entity Framework Core là một công cụ mạnh mẽ giúp bạn làm việc với cơ sở dữ liệu một cách hiệu quả trong ASP.NET Core Web API. Bằng cách sử dụng EF, bạn có thể tập trung vào việc xây dựng logic nghiệp vụ của ứng dụng mà không cần lo lắng quá nhiều về các chi tiết của truy xuất dữ liệu.

Hy vọng với hướng dẫn trên, bạn đã có cái nhìn tổng quan về cách tích hợp và sử dụng Entity Framework trong dự án ASP.NET Core Web API của mình. Nếu có bất kỳ thắc mắc hoặc cần trợ giúp thêm, hãy thoải mái hỏi nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

pzf-icon