到底哪一种最好呢?必须考虑序列化和反序列化的速度要快,占用内存小,并且不能有内存泄漏,容易使用。唉,难找啊。
我粗略看了下几种的ORM,请各位大侠不吝指教,小弟感激为盼。
国内:
Web Sharp: http://websharp.sf.net
License: BSD License, GNU Library or Lesser General Public License (LGPL)
.Net 版本: .Net Framework 2.0
入门文档写得不错,清晰,上手容易,同时也一下子就说清楚了WebSharp的意图以及覆盖范围。不过框架的层次就语焉不详了。
Websharp的目标,是开发一个开源的基于Microsoft.Net的轻量级的应用软件系统开发框架,包含以下内容:
* 一个轻量级的O/R Mapping框架
* 一个轻量级的AOP框架
* 一个轻量级的ServiceLocator,主要目的是为整合不同服务端技术的客户端编程。
Websharp ORM主要特点是使用Attribute作为描述映射的方法,简单明了,并且,对开发人员来说,只有PersistenceManager、Query、Transaction等极少数接口需要掌握,上手快,使用非常方便。只需要普通的类就可以进行O/R的转换,不需要从指定的类上派生。
遗憾:
无自动代码生成器,要手工写实体类。
Kanas.net: http://www.cnblogs.com/barton131420
License: GNU LESSER GENERAL PUBLIC LICENSE
.Net 版本:.Net Framework 1.1
优势:
它的设计思想也是使用Attribute作为描述映射的方法,同时多了一个 CodeGen IDE附加工具,使用XML格式文件作为输入,自动生成类的代码,不过VS2005下不能使用。并提供了基本NUnit一些测试【应该随便测试下运行效率】。
遗憾:
* CodeGen 工具没有提供源码,并且该工具必须在VS2003 IDE下使用,不爽。
* 帮助文档极不友好, Kanas.Framework 的基本描述,设计目标,覆盖范围都没有,帮助文件里类的说明用词晦涩难懂,还不如直接看源代码。上手难。
* 实体类必须从 BizObject 上派生(实际上它的BizObject也只是一个壳,所有的数据都是交由 DataCell 控制)
*
限制特定查询条件它似乎需要从 Constrant 类派生实现的,如 查询月日是否相同,都要定一个DayConstrant类,俺觉得这样太过于繁琐了。
NBear: http://Nbear.org
License: BSD.license
.Net 版本:.Net Framework 2.0
用到的第三方库: Castle Project
实体类必须定义成接口从 IEntity 派生,同样使用Attribute。
提供NBear.Tools.EntityGen.exe 工具从数据库表和视图生成对应的实体类,目前只支持SqlServer和Access。
入门文档极多,上手并不太难,感觉该库的侧重点是Web结合方面,很是不错,正和我的需要。
但是从访问cnbologs.com【本站点应该使用的就是Nbear,如果我记得不错的话,如有错误请指正】 的感觉上看,基本上是每周一两次的站点速度突然巨慢,有时甚至打不开网页(发作时间不定),如果不是有人在针对该站点攻击,就是可能占用内存太多或存在内存泄漏。
可惜没有对自身框架做描述和解释的文章。文档大多以教程为主,说明如何用。
国外
NHibernate for .NET
Release date: 03.11.2006
Requirements: .NET Framework 1.1 or 2.0
还未看,从java的Hibernate移植过来,如果没有利用CLR的特色,只是为了移植而移植,那就~~
DevExpress XPO
Lisence: 商用
还未看