.Net ABP Zero sqlite 集成

安裝

安裝 Microsoft.EntityFrameworkCore.Sqlite NuGet 包到 *.EntityFrameworkCore 項目.數據庫

注: 不要安裝 成Microsoft.EntityFrameworkCore.Sqlite.Core 會報錯的.json

 

配置DbContext

因爲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

  • 選擇* .Web.Mvc做爲啓動項目。
  • 打開包管理器控制檯並選擇* .EntityFrameworkCore項目。
  • 運行add-migration Initial_Migration命令
  • 運行update-database命令

SQLite集成現已完成。spa

hangfire與Sqlite集成

安裝 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等.執行中的任務. 跑出異常後數據不會回滾

相關文章
相關標籤/搜索