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
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]
và [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:
- Lấy chuỗi kết nối từ cấu hình.
- Gọi hàm cấu hình của MicroLite.
- Đă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ể:
- Cài đặt và cấu hình MicroLite.
- Định nghĩa entity và ánh xạ với bảng trong CSDL.
- Cấu hình DI cho ISession của MicroLite.
- 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!
CÔNG TY TNHH GIẢI PHÁP CÔNG NGHỆ TRANG DESIGNER
Trang Designer chuyên thiết kế website chuẩn SEO, thiết kế logo toàn diện giúp doanh nghiệp xây dựng một thương hiệu mạnh và bán hàng hiệu quả trên các nền tảng số cho nhiều lĩnh vực kinh doanh.
Vui lòng liên hệ: 138 Hiền Vương, Phường Phú Thạnh, Quận Tân Phú, TP. Hồ Chí Minh
Điện thoại: 0903.728.335
Website: www.trangdesigner.id.vn