上周末我在家试着使用几个ORM工具来写了数据访问模块。使用的模式都是UnitOfWork和Repository。 最终由服务层来和业务模块进行数据交互。目前只有3种ORM工具的例子。
包括Entity Framework, NHibernate和Simple.Data。
项目地址:http://code.google.com/p/multi-orm-samples/
补充:应有些人要求,让我上传一份源代码,在google code上上传了一份可以下载的代码,非svn迁出。6个小时内超过110次下载,确实有点不可思议。。。我会继续更新,包括模式和ORM工具,以及IOC工具。
数据访问模块的对比:
在不同的ORM中有不同的自动生成数据库方式。相对来说,EF最大的优势就是对SQL Server的支持更好,它设置不需要实体和数据库的映射就能自动创建数据库。而NHibernate对多数据库的支持非常好,而且它是比较稳定的东西。
Simple.Data代表一个新的势力,还很年轻,才0.9.它的优势不仅是使用了.net最新的特性,让数据的交互更加没有约束性,另外还支持扩展。目前很多人都在它的基础上写了针对各个数据库的ORM扩展。包括MongoDB。
在Web层面我使用了MVC3。另外使用了几个IoC工具,包括Unity和Autofac。
实际上例子中只是简单的增删改查,不包括1-N的例子,但是我可以确定的是,这几个ORM工具都可以很好的支持这些join,where ,in等数据操作。
这篇文章我不会介绍整个实现过程,整个实现并不复杂,所以如果你觉得需要我另外来介绍如果真个架构的实现,可以在后面评论里说明下,具体哪里不明白。
代码下载:
http://code.google.com/p/multi-orm-samples/
或者:http://code.google.com/p/multi-orm-samples/downloads/list 可以下载
你可以使用SVN CheckOut 源代码。
我希望有更多人愿意参与进来,完善现在的整个模式,让学习ORM的新人能够更快的去了解如何使用这些工具,对比它们的优缺点。
如果你有这个意向,并且有自己喜欢的ORM工具,请写好你的代码并通过email(nic162534@gmail.com)和我联系。
你的代码必须遵循以下几个规则:
1.遵循目前存在的3个ORM的编写模式。
2.面向接口编程。
3.使用IoC工具(Ninject,Castle, StructerMap等)。