配置上下文连接字符串
string connectString = default; Configure<AbpDbConnectionOptions>(options => { connectString = WholeShared.SqlConnectString; options.ConnectionStrings.Default = connectString; });
配置多数据库支持:
FreeSql.DataType dataType = default; Configure<AbpDbContextOptions>(options => { switch (WholeShared.DataType) { case AbpBaseDataType.Sqlite: options.UseSqlite<AbpBaseDataContext>(); dataType = FreeSql.DataType.Sqlite; break; case AbpBaseDataType.Mysql: options.UseMySQL<AbpBaseDataContext>(); dataType = FreeSql.DataType.MySql; break; case AbpBaseDataType.Sqlserver: options.UseSqlServer<AbpBaseDataContext>(); dataType = FreeSql.DataType.SqlServer; break; } });
这样就完成了对 EFCore 的多数据库配置了。
下面我们来使用类似的方法配置 Freesql。
Freesql 配置服务
首先,Freesql 里面有多种配置方式,例如 DbContext,读者可以到 Wiki 去学习 Freesql
:
https://github.com/dotnetcore/FreeSql/wiki/%E5%85%A5%E9%97%A8
笔者这里使用的是 “非正规” 的设计方式,哈哈哈哈。
在 BaseData
目录中,创建一个 FreesqlContext
类,其内容如下:
using FreeSql.Internal; using System; using System.Collections.Generic; using System.Text; namespace AbpBase.Database { /// <summary> /// Freesql 上下文 /// </summary> public partial class FreesqlContext { public static IFreeSql FreeselInstance => Freesql_Instance; private static IFreeSql Freesql_Instance; public static void Init(string connectStr, FreeSql.DataType dataType = FreeSql.DataType.Sqlite) { Freesql_Instance = new FreeSql.FreeSqlBuilder() .UseNameConvert(NameConvertType.PascalCaseToUnderscore) .UseConnectionString(dataType, connectStr) //.UseAutoSyncStructure(true) // 自动同步实体结构到数据库,生产环境禁止使用! .Build(); OnModelCreating(Freesql_Instance); } private static void OnModelCreating(IFreeSql freeSql) { OnModelCreatingPartial(freeSql); } } }
ExtensionData 目录中,创建 FreesqlContext
类 如下:
using FreeSql; using System; using System.Collections.Generic; using System.Text; namespace AbpBase.Database { public partial class FreesqlContext { private static void OnModelCreatingPartial(IFreeSql freeSql) { var modelBuilder = freeSql.CodeFirst; SyncStruct(modelBuilder); } /// <summary> /// 同步结构到数据中 /// </summary> /// <param name="codeFirst"></param> private static void SyncStruct(ICodeFirst codeFirst) { // codeFirst.SyncStructure(typeof(user)); } } }
然后在 AbpBaseDatabaseModule
的 ConfigureServices
函数中添加注入服务:
FreesqlContext.Init(connectString, dataType); context.Services.AddSingleton(typeof(IFreeSql), FreesqlContext.FreeselInstance); context.Services.AddTransient(typeof(FreesqlContext), typeof(FreesqlContext));
通过以上步骤,我们的 ABP 就可以支持多数据库了,EFCore + Freesql,并且将将表分级隔离维护。
到此这篇关于为ABP框架配置数据库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
标签:SQLite
相关阅读 >>
android studio如何获取Sqlite数据并显示到listview上
Sqlite expert pro5.0如何安装可视化数据库管理软件激活教程
Sqlite 入门教程四 增删改查 有讲究
Sqlite之c#版 system.data.Sqlite使用方法
asp.net与Sqlite数据库通过js和ashx交互(连接和操作)
更多相关阅读请进入《Sqlite》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。