Cài đặt
Cài đặt gói NuGet Microsoft.EntityFrameworkCore.Sqlite vào project **.EntityFrameworkCore**.
Lưu ý: Không cài đặt gói Microsoft.EntityFrameworkCore.Sqlite.Core vì sẽ gây lỗi.
Cấu hình DbContext
Do SQLite không hỗ trợ đa luồng, cần vô hiệu hóa transaction trong phương thức PreInitialize() của EntityFrameworkModule.
public class TenDuAnEntityFrameworkModule : AbpModule
{
public override void PreInitialize()
{
...
// Thêm dòng này để tắt transaction
Configuration.UnitOfWork.IsTransactional = false;
...
}
}
Cập nhật file DbContextConfigurer.cs
public static class DuAnDbContextConfigurer
{
public static void Configure(DbContextOptionsBuilder<DuAnDbContext> builder, string connectionString)
{
builder.UseSqlite(connectionString);
}
public static void Configure(DbContextOptionsBuilder<DuAnDbContext> builder, DbConnection connection)
{
builder.UseSqlite(connection);
}
}
Cấu hình chuỗi kết nối
Thay đổi chuỗi kết nối trong file **.Web.Mvc/appsettings.json** thành chuỗi kết nối SQLite:
{
"ConnectionStrings": {
"Default": "Data Source=DuAnDb.db"
},
...
}
Tạo cơ sở dữ liệu
Trước khi tạo database, xóa tất cả các lớp migration trong thư mục **.EntityFrameworkCore/Migrations**.
Lưu ý: Xóa tất cả file trong thư mục Migrations ngoại trừ thư mục Seed, đặc biệt là file *ContextModelSnapshot.
Thực hiện các bước sau:
- Chọn **.Web.Mvc** làm startup project
- Mở Package Manager Console và chọn project **.EntityFrameworkCore**
- Chạy lệnh
add-migration Initial_Migration - Chạy lệnh
update-database
Tích hợp Hangfire với SQLite
Cài đặt gói Hangfire.SQLite.Core và cập nhật file Startup.cs:
if (WebConsts.HangfireDashboardEnabled)
{
services.AddHangfire(config =>
{
config.UseSQLiteStorage(_appConfiguration.GetConnectionString("Default"));
});
}
JobStorage.Current = new SQLiteStorage(_appConfiguration.GetConnectionString("Default"));
Lưu ý quan trọng
Khi tích hợp với SQLite, do không sử dụng transaction, các sự kiện như EntityCreatingEventData, EntityUpdatingEventData khi xảy ra lỗi sẽ không rollback dữ liệu.