快速上手如何使用FluentData
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
点击(此处)折叠或打开
- public static IDbContext QueryDB()
- {
- return new DbContext().ConnectionStringName(\"testDBContext\", DbProviderTypes.SqlServer);
- }
2.)config中的连接字符串实例
点击(此处)折叠或打开
- <connectionStrings>
- <add name=\"testDBContext\" connectionString=\"server=192.168.1.100;uid=sa;pwd=sa!;database=testDB;\" />
- </connectionStrings>
那么下面就可以在我们的数据业务层中根据自己的需求随心所欲的写sql了。
1.需要返回一个实体:
点击(此处)折叠或打开
- Product product = QueryDB().Sql(@\"select * from Product
- where ProductId = 1\").QuerySingle<Product>()
2.根据参数返回一个实体?别急,尝尝那飘渺的链式操作吧
点击(此处)折叠或打开
- Product product = QueryDB().Sql(\"select * from Product where id=@id\")
- .Parameter(\"id\", id)
- .QuerySingle<Product>()
3.返回一个泛型。
点击(此处)折叠或打开
- List<Product> product = QueryDB().Sql(\"select * from Product where id=@id\")
- .Parameter(\"id\", id)
- .Query<Product>()
4.多表支持(这个楼主实际工作中倒是没有用到过)
点击(此处)折叠或打开
- using (var command = QueryDB().MultiResultSql())
- {
- List<Category> categories = command.Sql(
- @\"select * from Category;
- select * from Product;\").Query<Category>();
- List<Product> products = command.Query<Product>();
- }
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);\").ExecuteReturnLastId()
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>(\"Product\")
- .Where(x=>x.id,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.Commit();
- }
在事物的操作中记得context.Commit();方法的执行,楼主曾经在自己的一个项目中需要用到事物,却忘记了执行提交这个方法,最后在源码的汪 洋中探索许久
11.存储过程
有关存储过程的使用,楼主在实际项目开发中,用上了存储过程。该存储过程的作用是分页,那么这里也贴出来分享一下
点击(此处)折叠或打开
- public static List<T> getPage<T>(string tableName,string tableFields, string sqlWhere,string order,int pageIndex, int pageSize, out int total)
- {
- var store = QueryDB().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<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的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 快速上手seajs——简单易用Seajs
快速上手seajs——简单易用Seajs 原文 http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...
- Git版本控制Windows版快速上手
说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- Netron开发快速上手(二):Netron序列化
Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...
- Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...
随机推荐
- usb驱动开发6之端点描述符
学到这里不容易,先说一段故事吧. 二兄弟住一大楼的第80层,某深夜回家忘看通知(内容今夜停电). 兄弟俩背着沉重的大背包,在楼底下商量一下,决定一鼓作气,爬楼梯回家.两人抖擞精神,开始爬楼.爬到20楼 ...
- WindowsPhone8解锁提示IpOverUsbSvc问题
问题如图: 一般都是系统未启动或者未安装该服务. 1.使用sc命令查询是否存在IpOverUsbSvc服务 Cmd执行Sc query IpOverUsbSvc 结果如下,如果可以找到服务,state ...
- [Elixir008]Nested Module里的动态函数调用方式
有时我们需要动态生成一些模块名,然后调用它里面的函数.但是我们常常碰到的却是明明有那个模块,结果还是raise模块未定义... 我们来看看到底怎么回事? 首先我们定义一个函数 iex(1)> d ...
- scala学习之第三天:数组的特性与使用技巧
1.数组 Scala数组与Scala序列是兼容的 - 在需要Seq[T]的地方可由Array[T]代替.最后,Scala数组支持所有的序列操作. 隐式转换 方法1:通过scala.collection ...
- C语言 指针与字符串
C语言可以在栈区 or 堆区 or 全局区 存放字符串,字符串不单单是存储在全局区的. //字符串与指针 #include<stdio.h> #include<stdlib.h> ...
- C语言 链表的使用(链表的增删查改,链表逆转,链表排序)
//链表的使用 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include< ...
- echo "scale=100; a(1)*4" | bc -l 输出圆周率
突然看到echo "scale=100; a(1)*4" | bc -l可以输出圆周率,很惊奇,后来发现很简单. 首先bc是“basic calculator”的缩写,就是初级的计 ...
- Linux下的MySQL简单操作(服务启动与关闭、启动与关闭、查看版本)
小弟今天记录一下在Linux系统下面的MySQL的简单使用,如下: 服务启动与关闭 启动与关闭 查看版本 环境 Linux版本:centeros 6.6(下面演示),Ubuntu 12.04(参见文章 ...
- js第一天
学习js的地址 http://www.w3school.com.cn/js/index.asp JS是一种轻量级的编程语言,插入html页面后可以由任何浏览器去执行,可用于 HTML 和 web,更可 ...
- 坑死我啊,一个WPF Adorner使用注意事项
1.见鬼了? 项目中遇到这样的要求,一个Button用一个Adorner装饰,这个Adorner上又有一个Button,如下面这样 此时,我们在点击小Button的时候只希望处理小Button的事件, ...