MicroOrm.Net和现有ORM产品的对比
MicroOrm.Net主页:
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列随便目录总览:
http://www.cnblogs.com/mapserver/archive/2012/04/07/2436129.html
我写了一个系列的文章来介绍MicroOrm.Net,期间不断有同学来打击我,说没有特色,说是重复造轮子,我在写系列文章的开篇,就说了我不打算去和任何产品进行比较,但是很多同学都是眼睛一瞄就开始轻易的下定论,所以我觉得还是来详细说明MicroOrm.Net产生的背景以及和现有的ORM进行一个简单比较。
MicroOrm.Net是我现在产品中用到的一个ORM产品,产品立项初期在ORM的选择上,也是费了很多时间,但是最后决定来自己写。在MicroOrm.Net 1.0 beta出来后,使用起来感觉还不错,于是有了开源的想法,也算为同学们做点贡献。
MicroOrm.Net的特色:
1、可以不定义强类型Model;当然也支持强类型的Model:
var od = db.OrderDetail.Query() .Where(db.OrderDetail.OrderId == "001") .First(); string orderId = od.OrderId; int qty = od.Qty;
2、不用去定义Model和Model之间的Mapping
3、在多个表关联查询,每个表中取部分列来做返回结果时,不用像传统的ORM那样,需要一个Model去关联另一个Model,关联了一大堆的Model;而在MicroOrm.Net里,一切都可以用Select子句来搞定
4、抛弃上下文
5、大量使用动态对象,一切都是那么随心所欲
6、MicroOrm.Net源代码很小(代码量应该在3K~4K行左右,我没有去统计),自己修改和定制很简单
VS EF & NHibernate & iBatis
1、MicroOrm.Net和EF、NHibernate不在一个数量级上
2、EF、NHibernate都必须定义Model,都必须去Mapping(不管是xml方式,还是代码方式),这也是MicroOrm.Net产生的一个最重要的原因
3、庞大
4、性能问题
5、NHibernate、iBatis配置复杂
VS Dapper.Net
Dapper.Net性能很好,但是需要自己来写Sql语句,对支持多数据库很累
VS Simple.Data
Simple.Data是一个很不错的项目,我在写MicroOrm.Net打算用它,我详细的阅读了他的源代码,也做了大量的测试,但是最后放弃了
1、代码复杂
2、方法太灵活,比如查询,有很多中查询方式,在MicroOrm.Net里,所有的查询都统一的Query方法上了
3、Bug问题