# Mellivora

### 事先声明：该类库仅供学习和参考。

## 历程：

由于在学习中接触到了Dapper等优秀的ORM，因此激发了兴趣，想自己也尝试写一下类似的ORM。

## 技术实现

> 本库同样是对IDbConnection进行了扩展，在起初写Mellivora的时候，动态缓存也是由纯Emit来实现的，代码量大，不容易调试。一个缓存方法写下来有小1000行。因此2017年，发布了Natasha2016版，这一版初次对IL编程进行了简化优化操作，使用Natasha对之前的Mellivora进行了缓存方法重构，代码量减少了二分之一左右，另外保证了性能。

> ### 以下是两者ORM动态缓存方法的性能对比（未迁移至Core）

> 在细节优化的时候，Mellivora参照了大量的Dapper代码，而在缓存的设计上，Mellivora更为直观。 并且配备了实体类分析库Vasily，对实体类进行分析以及Sql自动生成,从而直接支持Add、Delete、Modify、Get方法，其中Vasily中增加了对String类的扩展，让字符串拼接更佳快速（优于StringBuilder,join）

> ## 性能对比

> 以下是Mellivora与Dapper预热完成之后的性能对比：

> - 执行1次
> - 执行1000次
> - 执行10000次
> - 执行100000次

以上库可以拿来修改，研究，发布。
经过编写Mellivora发现，Dapper在稳定性以及性能的平衡上做的非常好，细致入微。 开源地址：Mellivora Github 文档参考：Mellivora API