码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-04-11 22:18:39      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:

这个模块简单,且无实际作用。一般实际项目中都有用数据库做持久化,用了数据库就无法用这个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.MemoryDB

标签:

原文地址:http://www.cnblogs.com/1zhk/p/5380023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!