【转】ABP源码分析二十八:ABP.MemoryDB
这个模块简单,且无实际作用(该模块用于支持ABP框架单元测试的)。一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了。原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库的必然要注入efUnitOfWork. 而注入了efUnitOfWork就不能在注入MemoryDbUnitOfWork了。
MemoryDatabase:这是一个单例。ABP通过Dictionary<Type, object>+lock作为数据结构来实现内存数据库。其以entity的类型作为key,以entity list为value。
IMemoryDatabaseProvider: 接口返回MemoryDatabase。
UnitOfWorkMemoryDatabaseProvider : 实现IMemoryDatabaseProvider接口,通过调用ICurrentUnitOfWorkProvider的current UnitOfWork的Database获取MemoryDatabase。
MemoryDbUnitOfWork:实现IUnitOfWork接口。ABP在这个本模块中并没有实现事务逻辑。这个类在此模块中只用于返回MemoryDatabase对象。
MemoryRepository<TEntity, TPrimaryKey> : 继承自AbpRepositoryBase<TEntity, TPrimaryKey>,实现了Entity的CRUD操作。(这货居然不是线程安全的。证明这个模块无实际用途的第二个论点)
MemoryRepository<TEntity> : 其与MemoryRepository<TEntity, TPrimaryKey>差异就在于其支持的Entity主键是int类型。
返回ABP源码分析系列文章目录
分类: ABP
【转】ABP源码分析二十八:ABP.MemoryDB相关推荐
- ABP源码分析二十八:ABP.MemoryDB
这个模块简单,且无实际作用.一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库 ...
- 【转】ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- 【转】ABP源码分析二十九:ABP.MongoDb
这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...
- 【转】ABP源码分析二十六:核心框架中的一些其他功能
本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...
- 【转】ABP源码分析二十五:EventBus
IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...
- 【转】ABP源码分析二十四:Notification
NotificationDefinition: 用于封装Notification Definnition 的信息.注意和Notification 的区别,如果把Notification看成是具体的消息 ...
- 【转】ABP源码分析二十二:Navigation
MenuDefinition:封装了导航栏上的主菜单的属性. MenuItemDefinition:封装了主菜单的子菜单的属性.子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMen ...
- 【转】ABP源码分析二十:ApplicationService
IApplicationService : 空接口,起标识作用.所有实现了IApplicationService 的类都会被自动注入到容器中.同时所有IApplicationService对象都会被注 ...
- ABP源码分析二十五:EventBus
IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...
最新文章
- 20~40K | 迁移科技招3D视觉、深度学习算法工程师等十大岗位
- 经典的两数互换【指针】
- 元宇宙:Facebook正式改名为Meta,要砸600亿做这件事
- [云炬学英语]每日一句2020.8.26
- Django框架(25.Django中的模板继承以及HTML转义)
- 95. Unique Binary Search Trees II 不同的二叉搜索树 II
- Hibernate 一级缓存,二级缓存,查询缓存
- MySQL中述职类型的长度问题
- 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架
- Vue Nginx反向代理配置 解决生产环境跨域
- JavaScript学习总结(8)——JS实用技巧总结
- CSS知识点梳理(二)
- 【对讲机的那点事】公网对讲关键指标之组呼建立时延
- 小甲鱼Python学习笔记之函数(二)
- 测量运放的输入偏置电流 - 实验准备
- Re-ID Driven Localization Refinement for Person Search
- 全网最细海龟 (turtle) 画图讲解 (三):设置画笔样式
- [详解] iphone手机备份、升级流程
- 高通SDX12:跨子系统数据共享实例分享
- PAT_乙级_1006_筱筱
热门文章
- java stringutils_Java 笔记----- StringUtils 拼接字符
- 【C语言进阶深度学习记录】二十九 main函数与命令行参数
- 【移植驱动到Linux3.4.2内核之一】移植DM9000C网卡驱动
- 轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单 demo
- servlet加载资源两种方式-内外(初始化参数).properties文件
- linux文件目录的操作
- 关于javafx支持IOS、android等智能手机解决方案
- 三极管驱动(讲的比较好)
- AX 2009 界面伸缩功能
- 《C#本质论》读书笔记(十二)构造器 @ Lennon