快速上手如何使用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 一个用 ...
随机推荐
- javascript中的迭代器
1.forEach迭代器 forEach方法接收一个函数作为参数,对数组中每个元素使用这个函数,只调用这个函数,数组本身没有任何变化 //forEach迭代器 function square(num) ...
- PATH路径出错导致任何命令都找不到解决方法
1.export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端或者cd /usr/ ...
- android 合并两个jar包
你所要导出的类里边用到了别的jar包.比如说你写的类连接了数据库,用到数据库驱动包oracl.jar(也就是你导入到Myeclipse或eclipse的jdbc包).. .在dos环境下,进入到D盘的 ...
- python socket发送魔法包网络唤醒开机.py
python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...
- Table AdvanceTable针对表内行禁用multipleSelection , singleSelection
OATableBean table = (OATableBean)webBean.findChildRecursive("LineTable"); table.setInserta ...
- 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】
老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...
- Win7 Qt4.8.5+QtCreator2.8.0+mingw配置过程
1:安装包 百度盘下载链接: Mingw: :安装步骤 1.首先安装qt creator,双击qt-creator-windows-opensource-2.8.0,注意安装目录不要有空格和特殊字符, ...
- 20135335郝爽 & 20135304刘世鹏 实验一
北京电子科技学院(BESTI) 实 验 报 告 课程: 密码系统设计基础 ...
- 启动页面设置,icon图标设置
更多尺寸像素如何放置请看:http://chicun.jammy.cc/ 如何设置App的启动图,也就是Launch Image? 新建一个iosLaunchImage文件夹
- php图片水印添加,压缩,剪切的封装类
php对图片文件的操作主要是利用GD库扩展.当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码.当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有 ...