安装 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等.执行中的任务. 跑出异常后数据不会回滚