第三篇:FluentData轻量级.NET-ORM持久化技术详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FluentData - 轻量级.NET ORM持久化技术
解决方案
目录:
一、什么是ORM?
二、使用ORM的优势
三、使用ORM的缺点
四、NET下的ORM框架有哪些?
五、几种常用框架的比较
六、什么是FluentData?
七、快速上手如何使用FluentData?
八、提供资源下载
内容:
一、什么是ORM?
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
二、使用ORM的优势
优势一、隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。
优势二、ORM使我们构造固化数据结构变得简单易行。
在ORM年表的史前时代,我们需要将我们的对象模型转化为一条一条的SQL语句,通过直连或是DB helper在关系数据库构造我们的数据库体系。而现在,基本上所有的ORM框架都提供了通过对象模型构造关系数据库结构的功能。这,相当不错。
三、使用ORM的缺点
第一:无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。
第二:面向对象的查询语言(X-QL)作为一种数据库与对象之间的过渡,虽然隐藏了数据层面的业务抽象,但并不能完全的屏蔽掉数据库层的设计,并且无疑将增加学习成本.
第三:对于复杂查询,ORM仍然力不从心。虽然可以实现,但是不值的。视图可以解决大部分calculated column,case ,group,having,order by, exists,但是查询条件(a and b and not c and (d or d))。。。。。。
世上没有驴是不吃草的(又想好又想巧,买个老驴不吃草),任何优势的背后都隐藏着缺点,这是不可避免的。问题在于,我们是否能容忍缺点
四、.NET下的ORM框架有哪些?
现在市面上针对.NET ORM框架越来越多
微软自家的LINQ to SQL, Entity Framework不多说。
商业:
1.LightSpeed(免费版比较垃圾。表限制8个。另此厂商有NHibernate Designer工具)
2. Entityspaces(支持Access数据库,比较看好,求破解)。
3.OpenAccess(有比较给力的免费版。)
4.eXpressPersistent Objects(XPO)(支持Access)
(自称对LINQ支持比较给力。但支持数据库比较少。有老版本的开源版)
6.LLBLGen Pro (虽然支持的数据库比较多。但LINQ to SQL 只能用于MS SQL SERVER)
7.LinqConnect,Entity Developer和dotConnect Universa l (产品比较乱。对LINQ支持比较给力。有自动生成代码和可视化的工具。)
8.DataDirect Connect for (这个是ORM吗?应该和微软的产品合用)
9.ALINQ(国人开发。前期反编译了微软的SQL to SQL。后来自己写了各数据库provider发展而成。有免费版。中小型项目都可以用。但国人开发产品似乎充满困境。作者也开发了NHIbernate的代码生成器)
开源
1.NHibernate(大名鼎鼎,发展不错。有很多书可学。)
2.Castle ActiveRecord(建立在NHibernate之上,用.net attribute 映射。不过基本都用NHibernate了。Castle有好多项目可学习参考)
3.SubSonic(性能是问题。更新缓慢)
4. Opf3(貌似不更新了,可以学习用)
(也不更新了。)
6.BLToolkit(网站貌似被和谐。这个看介绍挺不错。支持的数据库也不少。性能据说也行。但似乎国内没人用。)
7.MyGeneration(代码自动生成工具和ORM。有各种模板。停止更新了)
五、几种常用框架的比较
以上就是市面上比较常见的.net ORM框架。其实比较完美的ORM框架应该是满足:
1.对象与数据库的映射
2.对象缓存
3.可视化设计和代码生成工具
4.支持多数据库
5.动态查询
6.延迟加载
7.非侵入式持久化
8.性能优良
9.支持存储过程和事务
10.多面向对象框架支持
ORM框架确实很方便,但发现也有其不足之处,比如多表联合查询,对视图和存储过程的处理不理想。整体性能低于面向SQL语句。
以上几种框架比较常用的应该是NHibernate,微软的EF及和FluentData。
上述几个框架各有优缺点
如:NHibernate 师出名门,大名鼎鼎的Hibernate厂商出品的专门针对.NET的ORM框架,优点是:功能强大,资料齐全,缺点是配置复杂,学习成本高
微软的EF自然是在VS开发中首推的,优点是和VS IDE集成很好,缺点是性能较NHiberte低,据说6.0后,性能明显加强,甚至于超过NHibernate,但本人未测,另外,对其他数据库的支持需要安装第三方插件,还有个人感觉也过于宠大,使用起来,不够灵活。功能和易用性介于NHibernate与EF之间。
相比较而言,笔者更推荐使用FluentData,一个轻量级开源的.NET ORM数据持久化框架
六、什么是FluentData?
FluentData:一种使用Fluent API的新型轻量级ORM模型
FluentData 是微型ORM(micro-ORM)家族的一名新成员,旨在比大型ORM(full ORM)更加易用。FluentData 于本月推出,它使用fluent API 并支持SQL Server、SQL Azure、Oracle 和MYSQL。