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. DRDB报错------0: Failure: (119) No valid meta-data signature found.

    一. 错误 drbdadm create-md datadrbdadm up data  <--启动时报错 [root@data-- ~]# drbdadm up data : Failure: ...

  2. C#属性有什么作用

    1,主要作用:将读,写权限分开.如果不使用属性,仅使用public, protected, private,这几个限制都是读,写属性一起的,可读就可写,不可读同时也不可写.不能实现只读不可写,只写不可 ...

  3. JS replace()方法-字符串首字母大写

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. replace()方法有两个参数,第一个参数是正则表达式,正则表达式如果带全局标志/g,则是代表替换 ...

  4. Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志

    11.5 日志记录 可以通过Loger.getGlobal().info(xxxx);的方式来记录log. 11.5.2 高级日志 1)通过一个包名来 创建一个新的日志记录器. private sta ...

  5. IOS开发之——CocoaPods安装和使用 OC和swift通吃

    网址一:步骤 http://blog.csdn.net/showhilllee/article/details/38398119 网址二:为什么这么做(原因) http://blog.csdn.net ...

  6. Opencv step by step - 绘图

    有时候我们需要在图像上写一些字或者画一些简单的几何图案. 祭上代码: #include <cv.h> #include <highgui.h> int main(int arg ...

  7. 慢牛APP相关截图

    慢牛APP相关截图 第一和第二个版本都是基于Sencha Touch+Cordova开发,公众号是采用Angularjs+D3开发,第三个版本是采用React Native开发. 第一个版本 第二个版 ...

  8. java识别简单的验证码

    1.老规矩,先上图 要破解类似这样的验证码: 拆分后结果: 然后去匹配,得到结果. 2.拆分图片 拿到图片后,首先把图片中我们需要的部分截取出来. 具体的做法是,创建一个的和图片像素相同的一个代表权重 ...

  9. LinuxMint(同Ubuntu)下安装配置NFS设置共享目录

    假设有两台机器, 机器A:10.68.93.2 机器B:10.68.93.3 现在需要将机器A上的/opt/nfsshare共享出去,然后挂载到机器B的/nfsshare目录下. 1. 在机器A上: ...

  10. JavaScript事件---事件对象

    发文不易,若转载传播,请亲注明出处,谢谢!   内容提纲: 1.事件对象 2.鼠标事件 3.键盘事件 4.W3C与IE JavaScript事件的一个重要方面是它们拥有一些相对一致的特点,可以给你的开 ...