这个模块简单,且无实际作用(该模块用于支持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相关推荐

  1. ABP源码分析二十八:ABP.MemoryDB

    这个模块简单,且无实际作用.一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库 ...

  2. 【转】ABP源码分析三十八: ABP.Web.Api.OData

    如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...

  3. 【转】ABP源码分析二十九:ABP.MongoDb

    这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...

  4. 【转】ABP源码分析二十六:核心框架中的一些其他功能

    本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...

  5. 【转】ABP源码分析二十五:EventBus

    IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...

  6. 【转】ABP源码分析二十四:Notification

    NotificationDefinition: 用于封装Notification Definnition 的信息.注意和Notification 的区别,如果把Notification看成是具体的消息 ...

  7. 【转】ABP源码分析二十二:Navigation

    MenuDefinition:封装了导航栏上的主菜单的属性. MenuItemDefinition:封装了主菜单的子菜单的属性.子菜单可以引用其他子菜单构成一个菜单树 UserMenu/UserMen ...

  8. 【转】ABP源码分析二十:ApplicationService

    IApplicationService : 空接口,起标识作用.所有实现了IApplicationService 的类都会被自动注入到容器中.同时所有IApplicationService对象都会被注 ...

  9. ABP源码分析二十五:EventBus

    IEventData/EventData: 封装了EventData信息,触发event的源对象和时间 IEventBus/EventBus: 定义和实现了了一系列注册,注销和触发事件处理函数的方法. ...

最新文章

  1. 20~40K | 迁移科技招3D视觉、深度学习算法工程师等十大岗位
  2. 经典的两数互换【指针】
  3. 元宇宙:Facebook正式改名为Meta,要砸600亿做这件事
  4. [云炬学英语]每日一句2020.8.26
  5. Django框架(25.Django中的模板继承以及HTML转义)
  6. 95. Unique Binary Search Trees II 不同的二叉搜索树 II
  7. Hibernate 一级缓存,二级缓存,查询缓存
  8. MySQL中述职类型的长度问题
  9. 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架
  10. Vue Nginx反向代理配置 解决生产环境跨域
  11. JavaScript学习总结(8)——JS实用技巧总结
  12. CSS知识点梳理(二)
  13. 【对讲机的那点事】公网对讲关键指标之组呼建立时延
  14. 小甲鱼Python学习笔记之函数(二)
  15. 测量运放的输入偏置电流 - 实验准备
  16. Re-ID Driven Localization Refinement for Person Search
  17. 全网最细海龟 (turtle) 画图讲解 (三):设置画笔样式
  18. [详解] iphone手机备份、升级流程
  19. 高通SDX12:跨子系统数据共享实例分享
  20. PAT_乙级_1006_筱筱

热门文章

  1. java stringutils_Java 笔记----- StringUtils 拼接字符
  2. 【C语言进阶深度学习记录】二十九 main函数与命令行参数
  3. 【移植驱动到Linux3.4.2内核之一】移植DM9000C网卡驱动
  4. 轻量级web富文本框——wangEditor使用手册(4)——配置下拉菜单 demo
  5. servlet加载资源两种方式-内外(初始化参数).properties文件
  6. linux文件目录的操作
  7. 关于javafx支持IOS、android等智能手机解决方案
  8. 三极管驱动(讲的比较好)
  9. AX 2009 界面伸缩功能
  10. 《C#本质论》读书笔记(十二)构造器 @ Lennon