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

MicroLite ORM là một micro ORM (Object Relational Mapper) mã nguồn mở cho .NET, được thiết kế nhằm cung cấp một giải pháp nhẹ, đơn giản và hiệu quả cho việc truy xuất cơ sở dữ liệu. MicroLite cho phép bạn thực hiện các thao tác CRUD (Create, Read, Update, Delete) mà không cần phải viết nhiều mã xử lý kết nối hay mapping dữ liệu thủ công, đồng thời vẫn cho phép bạn kiểm soát truy vấn SQL khi cần.
Tìm hiểu về MicroLite ORM và sử dụng trong ASP.NET Core Web API
Tìm hiểu về MicroLite ORM và sử dụng trong ASP.NET Core Web API

Tìm hiểu về MicroLite ORM

MicroLite ORM là một micro ORM (Object Relational Mapper) mã nguồn mở cho .NET, được thiết kế nhằm cung cấp một giải pháp nhẹ, đơn giản và hiệu quả cho việc truy xuất cơ sở dữ liệu. MicroLite cho phép bạn thực hiện các thao tác CRUD (Create, Read, Update, Delete) mà không cần phải viết nhiều mã xử lý kết nối hay mapping dữ liệu thủ công, đồng thời vẫn cho phép bạn kiểm soát truy vấn SQL khi cần.

Dưới đây là hướng dẫn cơ bản để tích hợp và sử dụng MicroLite ORM trong một dự án ASP.NET Core Web API.

Cài đặt MicroLite

Trước tiên, bạn cần cài đặt package MicroLite qua NuGet. Mở terminal hoặc Package Manager Console và chạy lệnh:

dotnet add package MicroLite

Nếu bạn sử dụng SQL Server, MicroLite sẽ sử dụng dialect tương ứng. Bạn chỉ cần cung cấp chuỗi kết nối và dialect trong cấu hình.

Cấu hình chuỗi kết nối

Trong file appsettings.json, thêm chuỗi kết nối đến cơ sở dữ liệu của bạn:

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

Tạo Entity (Model) và Mapping

Giả sử bạn có bảng Products trong cơ sở dữ liệu, tạo lớp Product và sử dụng các attribute của MicroLite để ánh xạ (Mapping) đối tượng với bảng dữ liệu. Ví dụ:

using MicroLite.Mapping;

[Table("Products")]
public class Product
{
    // Chỉ định đây là khóa chính với AutoIncrement
    [Column("Id")]
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    [Column("Name")]
    public string Name { get; set; }

    [Column("Price")]
    public decimal Price { get; set; }
}

Lưu ý: Các attribute như [Table], [Column], [PrimaryKey][AutoIncrement] được MicroLite sử dụng để ánh xạ các thuộc tính của lớp với bảng và cột trong cơ sở dữ liệu.

Cấu hình MicroLite và tích hợp qua Dependency Injection

MicroLite sử dụng một đối tượng SessionFactory để quản lý việc mở các phiên làm việc (session) kết nối đến CSDL. Bạn cần cấu hình MicroLite khi khởi động ứng dụng.

Tạo một lớp khởi tạo (ví dụ: MicroLiteInitializer):

using MicroLite;
using MicroLite.Configuration;
using MicroLite.Dialect;

public static class MicroLiteInitializer
{
    public static void Configure(string connectionString)
    {
        // Cấu hình MicroLite: chỉ định ConnectionFactory và Dialect sử dụng (ví dụ: SqlServerDialect)
        MicroLite.Configuration.Configure(config => config
            .UsingConnectionFactory(
                new ConnectionFactory(connectionString, new SqlServerDialect()))
            // Tự động scan assembly chứa mapping (ở đây sử dụng assembly chứa lớp Product)
            .WithMappingAssembly(typeof(Product).Assembly)
        );
    }
}

Sau đó, trong file Program.cs (cho ASP.NET Core 6 trở lên), bạn cần:

  1. Lấy chuỗi kết nối từ cấu hình.
  2. Gọi hàm cấu hình của MicroLite.
  3. Đăng ký ISession (phiên làm việc của MicroLite) trong DI container để có thể sử dụng trong các controller.
using MicroLite;

var builder = WebApplication.CreateBuilder(args);

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

// Cấu hình MicroLite ORM
MicroLiteInitializer.Configure(connectionString);

// Đăng ký ISession với vòng đời Scoped (một phiên làm việc cho mỗi request)
builder.Services.AddScoped(provider => SessionFactory.OpenSession());

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

Tạo API Controller sử dụng MicroLite

Sau khi đã cấu hình MicroLite và đăng ký ISession trong DI, bạn có thể tiêm (inject) ISession vào controller để thực hiện các thao tác với cơ sở dữ liệu.

Ví dụ, tạo một controller cho entity Product:

using Microsoft.AspNetCore.Mvc;
using System.Linq;
using MicroLite;

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

    public ProductsController(ISession session)
    {
        _session = session;
    }

    // GET: api/Products
    [HttpGet]
    public IActionResult GetProducts()
    {
        // Sử dụng MicroLite để truy vấn tất cả sản phẩm
        var products = _session.Query<Product>().ToList();
        return Ok(products);
    }

    // GET: api/Products/5
    [HttpGet("{id}")]
    public IActionResult GetProduct(int id)
    {
        // Lấy một sản phẩm theo Id
        var product = _session.Single<Product>(id);
        if (product == null)
            return NotFound();
        return Ok(product);
    }

    // POST: api/Products
    [HttpPost]
    public IActionResult PostProduct([FromBody] Product product)
    {
        // Chèn sản phẩm mới vào cơ sở dữ liệu
        _session.Insert(product);
        // Sau khi chèn, MicroLite sẽ cập nhật giá trị Id (nếu AutoIncrement)
        return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
    }

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

        // Cập nhật sản phẩm
        _session.Update(product);
        return NoContent();
    }

    // DELETE: api/Products/5
    [HttpDelete("{id}")]
    public IActionResult DeleteProduct(int id)
    {
        // Xóa sản phẩm theo Id
        _session.Delete<Product>(id);
        return NoContent();
    }
}

Một số lưu ý khi sử dụng MicroLite

  • Đơn giản và hiệu năng: MicroLite được thiết kế để cung cấp một API đơn giản và nhẹ, giúp bạn dễ dàng thao tác dữ liệu mà không cần sử dụng các cơ chế phức tạp như change tracking.
  • Mapping: Bạn có thể sử dụng attribute để ánh xạ giữa các lớp và bảng. Ngoài ra, MicroLite cũng hỗ trợ các kiểu mapping khác nếu cần.
  • Quản lý phiên làm việc: Mỗi phiên làm việc (session) được mở từ SessionFactory nên nên được quản lý theo vòng đời phù hợp (ví dụ: scoped cho mỗi request) để tránh rò rỉ kết nối.
  • Tùy biến: Mặc dù MicroLite có API đơn giản, nhưng bạn vẫn có thể thực hiện các truy vấn SQL tùy chỉnh khi cần thiết.

Kết luận

MicroLite ORM là một lựa chọn nhẹ, hiệu quả cho các dự án ASP.NET Core Web API, đặc biệt khi bạn cần kiểm soát trực tiếp các truy vấn SQL mà vẫn muốn có lợi ích của ORM. Với hướng dẫn tích hợp trên, bạn đã có thể:

  1. Cài đặt và cấu hình MicroLite.
  2. Định nghĩa entity và ánh xạ với bảng trong CSDL.
  3. Cấu hình DI cho ISession của MicroLite.
  4. Tạo các API Controller thực hiện các thao tác CRUD.

Nếu có thắc mắc hoặc cần hỗ trợ thêm, bạn cứ thoải mái đặt câu hỏi để được giải đáp!

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