快速上手如何使用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 一个用 ...
随机推荐
- addEvent和removeEvent优化写法
;(function(){ /** * 初始化分支是一种优化模式,当知道某个条件在整个生命周期内都不会发生变化时,仅对该条件测试一次. */ // 一般写法 var util = { addEvent ...
- 如何在.net4.0中使用.net4.5的async/await
推荐文章: http://www.cnblogs.com/hj4444/p/3857771.html http://www.cnblogs.com/dozer/archive/2012/03/06/a ...
- 【转】【WPF】WPF 登录窗口关闭时打开主窗口
在WPF中设计登录窗口关闭时打开主窗口,自动生成的App.xaml不能满足要求, 1.把App.xaml的属性窗口中的生成操作设定为 无 2.添加Program类 static class Progr ...
- 从0开始学Java——JSP&Servlet——HttpServletRequest相关的几个路径信息
在HttpServletRequest中有几个获取路径的接口:getRequestURI/getContextPath/getServletPath/getPathInfo 这些接口互相之间有什么区别 ...
- 20135202闫佳歆--week 7 Linux内核如何装载和启动一个可执行程序--实验及总结
week 7 实验:Linux内核如何装载和启动一个可执行程序 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.git c ...
- 千万不要在JS中使用连等赋值操作
前言 文章标题这句话原本是在国外某JavaScript规范里看到的,当时并没有引起足够的重视,直到最近一次出现了bug发现JS里的连等赋值操作的特色(坑). 网上搜索一番发现一个非常好的连等赋值的(来 ...
- 微信小程序开发:http请求
在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...
- 回归到最初的编程——Linux下的C编程
最近感觉有些浮躁,一方面感觉最近写公司的PHP代码倍感无聊,没有什么成就感!另一方面面对我的mac电脑中安装了诸多开发语言,倍感浮躁与困惑!同时想到这么多年来,却一直在使用PHP进行程序开发,总觉得有 ...
- ECMAScript —— 学习笔记(思维导图版)
导图
- 每天一个linux命令(7):cp 命令
cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如 ...