本文整理自网络,侵删。
目录
- 创建标准的 EFCore 数据库上下文
- 连接字符串
- 定义隔离的上下文
- 多数据库支持和配置
- Freesql 配置服务
在 AbpBase.Database
中,通过 Nuget 添加以下几个库:
版本都是 1.9.0-preview0917,你可以使用最新版本的。
Freesql FreeSql.Provider.Sqlite FreeSql.Provider.SqlServer FreeSql.Provider.MySql
创建标准的 EFCore 数据库上下文
在 ABP 中,EFCore 上下文类需要继承 AbpDbContext<T>
,整体编写方法跟继承 DbContext<T>
一致 ,接下来我们将一步步来讲解在 AbpBase
中如何添加 EFCore 功能。
连接字符串
ABP 中,可以在上下文类加上一个 ConnectionStringName
特性,然后在配置服务时,ABP 会自动为其配置连接字符串。
[ConnectionStringName("Default")] public partial class DatabaseContext : AbpDbContext<DatabaseContext>
Default
是一个标识,你也可以填写其他字符串标识。
定义隔离的上下文
首先,我们在 AbpBase.Database
模块中,创建两个文件夹:
BaseData ExtensionData
BaseData
目录用来存放基础表结构的上下文,ExtensionData
用来存放可能会拓展或者经常变动的表结构。
在 BaseData 中创建一个 AbpBaseDataContext
类,其内容如下:
using Microsoft.EntityFrameworkCore; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; namespace AbpBase.Database { /// <summary> /// 上下文 /// <para>这部分用于定义和配置基础表的映射</para> /// </summary> [ConnectionStringName("Default")] public partial class AbpBaseDataContext : AbpDbContext<AbpBaseDataContext> { #region 定义 DbSet<T> #endregion public AbpBaseDataContext(DbContextOptions<AbpBaseDataContext> options) : base(options) { } /// <summary> /// 定义映射 /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(ModelBuilder modelBuilder) { #region 定义 映射 #endregion OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); } }
在 ExtensionData 中也创建一个相同的 AbpBaseDataContext
类,其内容如下:
using Microsoft.EntityFrameworkCore; namespace AbpBase.Database { public partial class AbpBaseDataContext { #region 定义 DbSet<T> #endregion /// <summary> /// 定义映射 /// </summary> /// <param name="modelBuilder"></param> partial void OnModelCreatingPartial(ModelBuilder modelBuilder) { } } }
分部类,前者用于定义那些非常基础的,程序核心的实体(表)以及映射。而后者定义后续可能多次修改的,设计时感觉有设计余地的。
多数据库支持和配置
这里我们将对上下文进行配置和注入,使得程序能够支持多数据库。
在 AbpBase.Domain.Shared
项目中,创建一个枚举,其内容如下:
namespace AbpBase.Domain.Shared { public enum AbpBaseDataType { Sqlite = 0, Mysql = 1, Sqlserver = 2 // 其他数据库 } }
再创建一个 WholeShared
类,其内容如下:
namespace AbpBase.Domain.Shared { /// <summary> /// 全局共享内容 /// </summary> public static class WholeShared { // 数据库连接属性可以自行在配置文件中定义,这里写固定的,只是为了演示 /// <summary> /// 数据库连接字符串 /// </summary> public static readonly string SqlConnectString = ""; /// <summary> /// 要使用的数据库类型 /// </summary> public static readonly AbpBaseDataType DataType = AbpBaseDataType.Sqlite; } }
然后我们在 AbpBaseDatabaseModule
模块中的 ConfigureServices
函数里面添加依赖注入:
context.Services.AddAbpDbContext<AbpBaseDataContext>();
这里不需要配置数据库连接字符串,后面可以通过 ABP 的一些方法来配置。
相关阅读 >>
sqlserver、mysql、oracle三种数据库的优缺点总结
Sqlite developer怎么安装激活 Sqlite developer激活安装图文教程
android平台的sql注入漏洞浅析(一条短信控制你的手机)
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 为ABP框架配置数据库
相关推荐
评论
管理员已关闭评论功能...