安裝 Microsoft.EntityFrameworkCore.Sqlite
NuGet 包到 *.EntityFrameworkCore 項目.數據庫
注: 不要安裝 成Microsoft.EntityFrameworkCore.Sqlite.Core 會報錯的.json
因爲SQLite不支持多線程,所以應該在*EntityFrameworkModule.PreInitialize()
方法中禁用事務。多線程
public class 你的項目名稱EntityFrameworkModule : AbpModule { public override void PreInitialize() { ... // add this line to disable transactions Configuration.UnitOfWork.IsTransactional = false; ... } }
替換 你的項目名稱DbContextConfigurer.cs
public static class SqliteDemoDbContextConfigurer { public static void Configure(DbContextOptionsBuilder<SqliteDemoDbContext> builder, string connectionString) { builder.UseSqlite(connectionString); } public static void Configure(DbContextOptionsBuilder<SqliteDemoDbContext> builder, DbConnection connection) { builder.UseSqlite(connection); } }
在* .Web.Mvc / appsettings.json中將鏈接字符串更改成SQLite鏈接。例:app
{ "ConnectionStrings": { "Default": "Data Source=SqliteDemoDb.db" }, ... }
在建立數據庫以前,刪除* .EntityFrameworkCore / Migrations文件夾下的全部遷移類。ide
注:Migrations文件夾下 除了Seed文件夾,其餘的遷移類都要刪除,否則始終不會生成數據庫表.特別是*bContextModelSnapshot文件.不刪不會建立表.ui
如今它已經準備好構建數據庫了。this
add-migration Initial_Migration
命令update-database
命令SQLite集成現已完成。spa
安裝 Hangfire.SQLite.Core包線程
修改Startup.cscode
if (WebConsts.HangfireDashboardEnabled) { services.AddHangfire(config => { config.UseSQLiteStorage(_appConfiguration.GetConnectionString("Default")); }); } JobStorage.Current = new SQLiteStorage(_appConfiguration.GetConnectionString("Default"));
與SQLite集成.因爲多線程的問題.不能開啓事務.有些代碼就i須要調整.
好比:Abp 自帶事件中 EntityCreatingEventData ,EntityUpdatingEventData等.執行中的任務. 跑出異常後數據不會回滾