http://blog.itpub.net/29511780/viewspace-1194048/

目录: 
 
一、什么是ORM? 
二、使用ORM的优势 
三、使用ORM的缺点 
四、NET下的ORM框架有哪些? 
五、几种常用框架的比较 
六、什么是FluentData? 
七、快速上手如何使用FluentData? 
八、提供资源下载

七、快速上手如何使用FluentData

本文摘自:http://bbs.ibeifeng.com/read-htm-tid-66379.html

下面我将一一举例向大家介绍FluentData在开发过程中的运用. 
一:下载该项目并且引用FluentData.dll,或者直接在解决方案中添加该开源项目.项目地址:http://fluentdata.codeplex.com/ 
二.dll引用入到我们的数据业务层. 
1.)创建并且初始化一个IDbContext. 
它是我们与数据库操作中的上下文,所有的有关数据操作都调用它下面的方法。初始化它的连接字符串web.config

点击(此处)折叠或打开

  1. public static IDbContext QueryDB()
  2. {
  3. return new DbContext().ConnectionStringName(\"testDBContext\", DbProviderTypes.SqlServer);
  4. }

2.)config中的连接字符串实例

点击(此处)折叠或打开

  1. <connectionStrings>
  2. <add name=\"testDBContext\" connectionString=\"server=192.168.1.100;uid=sa;pwd=sa!;database=testDB;\" />
  3. </connectionStrings>

那么下面就可以在我们的数据业务层中根据自己的需求随心所欲的写sql了。 
1.需要返回一个实体:

点击(此处)折叠或打开

  1. Product product = QueryDB().Sql(@\"select * from Product
  2. where ProductId = 1\").QuerySingle<Product>()

2.根据参数返回一个实体?别急,尝尝那飘渺的链式操作吧

点击(此处)折叠或打开

  1. Product product = QueryDB().Sql(\"select * from Product where id=@id\")
  2. .Parameter(\"id\", id)
  3. .QuerySingle<Product>()

3.返回一个泛型。

点击(此处)折叠或打开

  1. List<Product> product = QueryDB().Sql(\"select * from Product where id=@id\")
  2. .Parameter(\"id\", id)
  3. .Query<Product>()

4.多表支持(这个楼主实际工作中倒是没有用到过)

点击(此处)折叠或打开

  1. using (var command = QueryDB().MultiResultSql())
  2. {
  3. List<Category> categories = command.Sql(
  4. @\"select * from Category;
  5. select * from Product;\").Query<Category>();
  6. List<Product> products = command.Query<Product>();
  7. }

5.插入操作

点击(此处)折叠或打开

  1. var productId = QueryDB().Insert(\"Product\")
  2. .Column(\"Name\", \"The Warren Buffet Way\")
  3. .Column(\"CategoryId\", 1)
  4. .ExecuteReturnLastId()

6.当然我喜欢写我牛B的sql。

点击(此处)折叠或打开

  1. var productId = QueryDB().Sql(@\"insert into Product(Name, CategoryId)
  2. values(\'The Warren Buffet Way\', 1);\").ExecuteReturnLastId()

7.修改操作.

点击(此处)折叠或打开

  1. QueryDB().Update(\"Product\")
  2. .Column(\"Name\", \"The Warren Buffet Way\")
  3. .Column(\"CategoryId\", 1)
  4. .Where(\"ProductId\", 1)
  5. .Execute()

同上,也可以不用update()方法,而直接写sql. 
8.删除操作 
QueryDB().Delete("Product").Where("ProductId", 1).Execute(); 
9.我想链式操作,我想写lambda表达式OK。

点击(此处)折叠或打开

  1. QueryDB().Delete<Product>(\"Product\")
  2. .Where(x=>x.id,id)
  3. .Execute()

10.事物的处理

点击(此处)折叠或打开

  1. using (var context = QueryDB().UseTransaction)
  2. {
  3. context.Sql(\"update Product set Name = @0 where ProductId = @1\")
  4. .Parameters(\"The Warren Buffet Way\", 1)
  5. .Execute();
  6. context.Sql(\"update Product set Name = @0 where ProductId = @1\")
  7. .Parameters(\"Bill Gates Bio\", 2)
  8. .Execute();
  9. context.Commit();
  10. }

在事物的操作中记得context.Commit();方法的执行,楼主曾经在自己的一个项目中需要用到事物,却忘记了执行提交这个方法,最后在源码的汪 洋中探索许久 
11.存储过程 
有关存储过程的使用,楼主在实际项目开发中,用上了存储过程。该存储过程的作用是分页,那么这里也贴出来分享一下

点击(此处)折叠或打开

  1. public static List<T> getPage<T>(string tableName,string tableFields, string sqlWhere,string order,int pageIndex, int pageSize, out int total)
  2. {
  3. var store = QueryDB().StoredProcedure(\"PF_Sys_PageControl\")
  4. .ParameterOut(\"totalPage\", DataTypes.Int16)
  5. .Parameter(\"tableName\", tableName)
  6. .Parameter(\"tableFields\", tableFields)
  7. .Parameter(\"sqlWhere\", sqlWhere)
  8. .Parameter(\"orderFields\", order)
  9. .Parameter(\"pageSize\", pageSize)
  10. .Parameter(\"pageIndex\", pageIndex);
  11. var result=store.Query<T>()

上面贴的都是一些方法内容,具体的可以用方法封装下,当然该ORM是基于Freamework4.0的,Idbcontext接口下的方法也有支持返回一个动态类型的,所以扩展性也不弱。具体的就在于灵活的运用。 
至此;写到这里一定很激动了吧,大伙有时间有机会的话,也去尝试下吧。 
 
八、提供资源下载 
 
关于NHibernate及EF在北风网官网上能找到我的教程,但关于FluentData的这个ORM框架的视频市面上虽有,却少,而且不系统完整,兼与此, 
我自己计划出一些关于FluentData的教学视频,已经在进行中,照例给出思维导图及已完成的视频,需了解更多的可以给我留言,希望我的付出对您有所帮助。 

已经录制好的视频有如下十二讲,后面计划会结合具体的案例项目更深入的讲解

本次先公开课程的前三讲及部分代码(说明:代码请用VS2012打开),供大家入门参考! 
 
链接:http://pan.baidu.com/s/1eQkV4VC
密码在原文,即下面链接中。
《FluentData - 轻量级.NET ORM持久化技术解决方案》 全文请查看:http://bbs.ibeifeng.com/read-htm-tid-66379.html

快速上手如何使用FluentData的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...

  3. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手

    原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...

  4. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  5. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  6. Git版本控制Windows版快速上手

    说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  7. Objective-C快速上手

    最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...

  8. Netron开发快速上手(二):Netron序列化

    Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...

  9. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

随机推荐

  1. LUA GC 简单测试

    function table.count(t) if type(t) ~= "table" then assert(false) return end for k, _ in pa ...

  2. 即学即会 Java 程序设计基础视频教程(100课整)无水印版

    课程总共包含100个课时,总授课长达27多个小时,内容覆盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟通过本套视频的学习,学员能够快速的掌握java编程语言,成为java高手. 课程目录:课时1 ...

  3. 从0开始学Java——@override的作用

    早上跟着<jsp&Servlet学习笔记>来学习jsp,在使用eclipse创建了一个servlet类之后,发现自动创建的类和书上相比,doGet方法的前面少了@override, ...

  4. 简便的自动布局,对UIStackView的个人理解!

    序言: 更新了很久的Linux,我怕朋友们都视觉疲劳了,今天就更新在学ios开发时候,对一些知识点的理解.希望各位会喜欢! 正文: UIStackView 类提供了一个高效的接口用于平铺一行或一列的视 ...

  5. canvas粒子demo

    之前在codepen上看到了类似的效果,于是自己也使用coffee-script写了个相似的demo 效果:http://whxaxes.github.io/canvas-test/src/Parti ...

  6. Mtk Ft6306 touch 驱动 .

    1.1.    MTK Touch 驱动的组成Mtk  Touch  driver 驱动包括:Mtk platform 虚拟平台设备驱动.Module touch IC 驱动.Input subsys ...

  7. ModelProxy 前端接口配置建模框架

    ModelProxy    轻量级的接口配置建模框架(1) 先看一下这个博客说明为什么需要用ModelProxy的前端轻量级的框架吧:  http://developer.51cto.com/art/ ...

  8. css基本的东西

    0 css本来也是一个比较乱的东西,我们需要在最恰当的情况下,写出最杂乱的效果.1 面对body设置了 -webkit-font-smoothing:antialiased (默认值为subpixel ...

  9. 03.C#委托(二章1.1)

    一章1.5-1.8介绍的是com.动态类型及.NET平台一些说明,每个心中都有自己的标准,听一家之言,叫人不爽,相信自己有自己的标准和自己的编程理念就OK了,也不想码那么多说明性的文字,直接跳过吧,当 ...

  10. Web Service 小练习

    对于网站与网站之间数据互动,这是我的说法,不是专家说的,不要相信.应该有专业的说法. 从他人的网站通过一个接口获取数据,这一直是我感到神奇的事,怎么实现的,一直萦绕于心,想要弄过究竟,怎么是实现的啊! ...