快速上手如何使用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 一个用 ...
随机推荐
- Gerrit日常操作命令收集
Gerrit代码审核工具是个好东西,尤其是在和Gitlab和Jenkins对接后,在代码控制方面有着无与伦比的优势. 在公司线上部署了一套Gerrit系统,在日常运维中,使用了很多gerrit命令,在 ...
- 1140 Jam的计数法
1140 Jam的计数法 2006年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descri ...
- 浅析C#深拷贝与浅拷贝(转)
1.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来.虽然都是复制对象,但是不同的 复制方法,复制出来的新对象却并 ...
- bzoj roll题器(Py大法好)
此roll题器能实现非权限号跳过权限题及所有号跳过已切题 点击下载rar文件(py2) 点击下载rar文件(py3)
- 未能进入中断模式,原因如下:源文件“XXXXXX”不属于正在调试的项目。
这个问题是由于项目文件位置变动导致的.提示框已经说的比较清楚了. 首先可以尝试[重新生成] ,一般可以解决这个问题了. 我遇到的情况是,设置配置时,不小心取消了生成选择. 所以打开配置管理器,把相关的 ...
- WorldWind源码剖析系列:BMNG类构造函数深入分析
BMNG构造函数深入分析 一.主要类图 二.主要功能: 1) BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...
- Google proto buffer的安装/使用
protobuf安装/使用原本是要在官网上下载的:http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz可惜已被墙,幸好有好心人提供了以下 ...
- Android自定义单选,自定义选中状态
如图,此布局用GrildView实现,弹出框由Activity的dialog样式实现. 屏蔽系统GrildView点击背景黄色: grildview.setSelector(new ColorDraw ...
- jQuery上传插件Uploadify使用帮助
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合使用,诸如PHP, ...
- 20135208 20135212 LINUX第一次实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 201352 姓名:池彬宁 贺邦 学号:2013521 ...