ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:148.98KB ,
资源ID:9047570      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9047570.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三篇FluentData轻量级NET ORM持久化技术详解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三篇FluentData轻量级NET ORM持久化技术详解.docx

1、第三篇FluentData轻量级NET ORM持久化技术详解FluentData - 轻量级.NET ORM持久化技术解决方案目录:1、什么是ORM?2、使用ORM的优势3、使用ORM的缺点4、NET下的ORM框架有哪些?5、几种常用框架的比较6、什么是FluentData?7、快速上手如何使用FluentData?8、提供资源下载内容:一、什么是ORM?ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。二

2、、使用ORM的优势优势一、 隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。优势二、ORM使我们构造固化数据结构变得简单易行。 在ORM年表的史前时代,我们需要将我们的对象模型转化为一条一条的SQL语句,通过直连或是DB helper在关系数据库构造我们的数据库体系。而现在,基本上所有的ORM框架都提供了通过对象模型构造关系数据库结构的功能。这,相当不错。三、使用ORM的缺点第一:无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种OR

3、M框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。第二:面向对象的查询语言(X-QL)作为一种数据库与对象之间的过渡,虽然隐藏了数据层面的业务抽象,但并不能完全的屏蔽掉数据库层的设计,并且无疑将增加学习成本.第三:对于复杂查询,ORM仍然力不从心。虽然可以实现,但是不值的。视图可以解决大部分calculated column,case ,group,having,order by, exists,但是查询条件(a and b and not c and (d or d)。 世上没有驴是不吃草的(又想好又想巧,买个老驴不吃草),任何优势的背后都隐藏着缺点,这

4、是不可避免的。问题在于,我们是否能容忍缺点四、.NET下的ORM框架有哪些?现在市面上针对.NET ORM框架越来越多微软自家的LINQ to SQL, ADO.NET Entity Framework不多说。 商业:1.LightSpeed(免费版比较垃圾。表限制8个。另此厂商有NHibernate Designer工具) 2. Entityspaces(支持Access数据库,比较看好,求破解)。 3.OpenAccess(有比较给力的免费版。) 4.eXpressPersistent Objects(XPO)(支持Access) 5.DataObjects.Net(自称对LINQ支持比较

5、给力。但支持数据库比较少。有老版本的开源版)6.LLBLGen Pro (虽然支持的数据库比较多。但LINQ to SQL 只能用于MS SQL SERVER) 7.LinqConnect , Entity Developer 和 dotConnect Universal (产品比较乱。对LINQ支持比较给力。有自动生成代码和可视化的工具。) 8.DataDirect Connect for ADO.NET(这个是ORM吗?应该和微软的产品合用) 9.ALINQ(国人开发。前期反编译了微软的SQL to SQL。后来自己写了各数据库provider发展而成。有免费版。中小型项目都可以用。但国人

6、开发产品似乎充满困境。作者也开发了NHIbernate的代码生成器) http:/www.alinq.org/开源1.NHibernate(大名鼎鼎,发展不错。有很多书可学。) http:/nhforge.org/Default.aspx2.Castle ActiveRecord (建立在NHibernate之上,用.net attribute 映射。不过基本都用NHibernate了。Castle有好多项目可学习参考) http:/www.castleproject.org/castle/projects.html3.SubSonic (性能是问题。更新缓慢) 4. Opf3(貌似不更新了,

7、可以学习用) 5.MyBatis.NET (也不更新了。) 6.BLToolkit(网站貌似被和谐。这个看介绍挺不错。支持的数据库也不少。性能据说也行。但似乎国内没人用。) 7.MyGeneration(代码自动生成工具和ORM。有各种模板。停止更新了) 五、几种常用框架的比较以上就是市面上比较常见的.net ORM框架。其实比较完美的ORM框架应该是满足:1.对象与数据库的映射2.对象缓存3.可视化设计和代码生成工具4.支持多数据库5.动态查询6.延迟加载7.非侵入式持久化8.性能优良9.支持存储过程和事务10.多面向对象框架支持ORM框架确实很方便,但发现也有其不足之处,比如多表联合查询,

8、对视图和存储过程的处理不理想。整体性能低于面向SQL语句。以上几种框架比较常用的应该是NHibernate,微软的EF及MyBatis.NET和FluentData。上述几个框架各有优缺点如:NHibernate 师出名门,大名鼎鼎的Hibernate厂商出品的专门针对.NET的ORM框架,优点是:功能强大,资料齐全,缺点是配置复杂,学习成本高微软的EF自然是在VS开发中首推的,优点是和VS IDE集成很好,缺点是性能较NHiberte低,据说6.0后,性能明显加强,甚至于超过NHibernate,但本人未测,另外,对其他数据库的支持需要安装第三方插件,还有个人感觉也过于宠大,使用起来,不够灵

9、活。MyBatic.NET功能和易用性介于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。FluentData 的设计者 Lars-Erik Kind

10、blad 谈到:当前市面上的 ORM 框架,如 Entity Framework 和 NHibernate,都过于复杂而且难于学习。此外,由于这些框架自身抽象的查询语言以及从数据库到 .NET 对象的映射太过麻烦,导致它们生成的 SQL 都很低效。FluentData 另辟蹊径,它是一个轻量级框架,拥有简单的 fluent API 并且很容易学会。与其他微型 ORM(如 Dapper 和 Massive)类似,FluentData 关注性能和易用性。它允许开发人员拥有对 SQL 较多的控制,而不是依赖 ORM 进行自动生成。它不仅可以使用 SQL 来执行查询、增添和更新操作,还可以支持使用存储

11、过程和事务。根据文档描述,FluentData 可以在不改动已有结构的情况下,与任何业务对象一同工作。以下是 FluentData 的一些其他特性: 多结果集(Multiple Result Set):在一次数据库操作下返回多个数据集; 开发人员可使用强类型对象或动态对象; 可为创建时需要特殊处理的复杂对象自定义实体工厂(Custom Entity Factory); 具有添加其他数据库支持的能力。FluentData 需要 .NET 4.0,并支持 SQL Server、SQL Azure、SQL Server Compact 以及使用 .NET 驱动的 Oracle 和 MySQL。 想要

12、了解进一步信息,如代码示例和免费下载,请访问CodePlex 站点上的 FluentData。(七、快速上手如何使用FluentData下面我将一一举例向大家介绍FluentData在开发过程中的运用.一:下载该项目并且引用FluentData.dll,或者直接在解决方案中添加该开源项目.项目地址:二.dll引用入到我们的数据业务层.1.)创建并且初始化一个IDbContext.它是我们与数据库操作中的上下文,所有的有关数据操作都调用它下面的方法。初始化它的连接字符串web.configpublic static IDbContext QueryDB() return new DbContex

13、t().ConnectionStringName(testDBContext, DbProviderTypes.SqlServer); 2.)config中的连接字符串实例 那么下面就可以在我们的数据业务层中根据自己的需求随心所欲的写sql了。1.需要返回一个实体:Product product = QueryDB().Sql(select * from Product where ProductId = 1).QuerySingle(); 2.根据参数返回一个实体?别急,尝尝那飘渺的链式操作吧Product product = QueryDB().Sql(select * from Prod

14、uct where id=id) .Parameter(id, id) .QuerySingle(); 3.返回一个泛型。List product = QueryDB().Sql(select * from Product where id=id) .Parameter(id, id) .Query(); 4.多表支持(这个楼主实际工作中倒是没有用到过)using (var command = QueryDB().MultiResultSql() List categories = command.Sql( select * from Category; select * from Produ

15、ct;).Query(); List products = command.Query(); 5.插入操作var productId = QueryDB().Insert(Product) .Column(Name, The Warren Buffet Way) .Column(CategoryId, 1) .ExecuteReturnLastId(); 6.当然我喜欢写我牛B的sql。var productId = QueryDB().Sql(insert into Product(Name, CategoryId) values(The Warren Buffet Way, 1);).Ex

16、ecuteReturnLastId(); 7.修改操作.QueryDB().Update(Product) .Column(Name, The Warren Buffet Way) .Column(CategoryId, 1) .Where(ProductId, 1) .Execute(); 同上,也可以不用update()方法,而直接写sql.8.删除操作QueryDB().Delete(Product).Where(ProductId, 1).Execute(); 9.我想链式操作,我想写lambda表达式OK。QueryDB().Delete(Product) .Where(x=x.id

17、,id) .Execute(); 10.事物的处理using (var context = QueryDB().UseTransaction) context.Sql(update Product set Name = 0 where ProductId = 1) .Parameters(The Warren Buffet Way, 1) .Execute(); context.Sql(update Product set Name = 0 where ProductId = 1) .Parameters(Bill Gates Bio, 2) .Execute(); context.Commi

18、t();在事物的操作中记得context.Commit();方法的执行,楼主曾经在自己的一个项目中需要用到事物,却忘记了执行提交这个方法,最后在源码的汪洋中探索许久11.存储过程有关存储过程的使用,楼主在实际项目开发中,用上了存储过程。该存储过程的作用是分页,那么这里也贴出来分享一下public static List getPage(string tableName,string tableFields, string sqlWhere,string order,int pageIndex, int pageSize, out int total) var store = QueryDB()

19、.StoredProcedure(PF_Sys_PageControl) .ParameterOut(totalPage, DataTypes.Int16) .Parameter(tableName, tableName) .Parameter(tableFields, tableFields) .Parameter(sqlWhere, sqlWhere) .Parameter(orderFields, order) .Parameter(pageSize, pageSize) .Parameter(pageIndex, pageIndex); var result=store.Query()

20、上面贴的都是一些方法内容,具体的可以用方法封装下,当然该ORM是基于Freamework4.0的,Idbcontext接口下的方法也有支持返回一个动态类型的,所以扩展性也不弱。具体的就在于灵活的运用。 至此;写到这里一定很激动了吧,大伙有时间有机会的话,也去尝试下吧。8、提供资源下载关于NHibernate及EF在北风网官网上能找到我的教程,但关于FluentData的这个ORM框架的视频市面上虽有,却少,而且不系统完整,兼与此,我自己计划出一些关于FluentData的教学视频,已经在进行中,照例给出思维导图及已完成的视频,需了解更多的可以给我留言,希望我的付出对您有所帮助。已经录制好的视频有如下十二讲,后面计划会结合具体的案例项目更深入的讲解本次先公开课程的前三讲及部分代码(说明:代码请用VS2012打开),供大家入门参考!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1