最近在帮朋友做一个简单管理系统,因为笔者够懒,但是使用过的NHibernate用来做这中项目又太不实际了,索性百度了微型ORM,FluentData是第一个跳入我眼睛的词。简单的了解下FluentData使用,主要看看是不是符合笔者的要求。嗯……嗯……反应还不错,API使用也很简单,参数化查询、分页什么的都有了,好了就它了,下面还是本篇的正题,怎么使用它。

 1、下载

  http://fluentdata.codeplex.com/

  这里需要注意的是,FluentData需要.NET4.0的支持,同时支持dynamic,支持的数据库有:

  • MS SQL Server
  • MS SQL Server Compact 4.0
  • MS SQL Azure
  • MS Access
  • Oracle
  • MySQL
  • SQLite
  • PostgreSQL
  • IBM DB2
  • Sybase

 2、使用

  说说简单的增、删、改、查,创建并且初始化一个IDbContext,函数中第一个参数为数据库链接字符串,第二个参数为数据库类型

public static IDbContext Context()
{
var context = new DbContext().ConnectionString(ConnectionString, new SqlServerProvider());
return context;
}

新增使用:

var MembershipId = FluentDataHelper.Context().Sql("insert into Membership(Name,Address) values(@0,@1)").Parameters("张三", "长沙").ExecuteReturnLastId<int>();

Or

var Insert = FluentDataHelper.Context().Insert("Membership")
.Column("Name", Name)
.Column("Address", Address);

if (ImageByte != null)
Insert.Column("Image", ImageByte); int MembershipId = Insert.ExecuteReturnLastId<int>();

删除使用:

int RowId = FluentDataHelper.Context().Sql("delete Membership where Id = @Id").Parameter("Id", Id).Execute();

Or

int RowId = FluentDataHelper.Context().Delete("Membership").Where("Id", Id).Execute();

修改使用:

int RowId = FluentDataHelper.Context().Sql("update Membership set Name = @Name where Id = @Id").Parameter("Name", Name).Parameter("Id", EditId).Execute();

Or

var Update = FluentDataHelper.Context().Update("Membership")
.Column("Name", Name)
.Where("Id", EditId); if (ImageByte != null)
Update.Column("Image", ImageByte); int RowId = Update.Execute();

查询使用:

//返回单个值
int RowId = FluentDataHelper.Context().Select<int>("Count(1)")
.From("Membership")
.Where("Tel = @Tel").Parameter("Tel", Tel)
.AndWhere("Id != @Id").Parameter("Id", EditId)
.QuerySingle();
//返回实体
MembershipEntity Entity = FluentDataHelper.Context().Select<MembershipEntity>("*")
.From("Membership")
.Where("Id = @Id").Parameter("Id", EditId)
.QuerySingle();
//返回多个对象
List<MembershipGroupEntity> ListGroup = FluentDataHelper.Context().Select<MembershipGroupEntity>("*")
.From("MembershipGroup")
.QueryMany();
//多表关联及分页
var select = FluentDataHelper.Context()
.Select<VehicleEntity>("Vehicle.*,AdminUser.Name as AdminName,Membership.Name as MembershipName,Membership.Tel,Membership.CardId,Membership.Address,Membership.Source")
.From("Vehicle left join AdminUser on Vehicle.AdminId = AdminUser.Id left join Membership on Vehicle.MembershipId = Membership.Id")
.OrderBy("Vehicle.Time desc")
.Paging(pageInfo.PageIndex, pageInfo.PageSize); if (!string.IsNullOrEmpty(Name))
{
select.AndWhere("Membership.Name like @Name").Parameter("Name", string.Format("%{0}%", Name));
}
if (!string.IsNullOrEmpty(Code))
{
select.AndWhere("Code = @Code").Parameter("Code", Code);
} this.GridViewVehicle.DataSource = select.QueryMany();

事务使用:

//反生异常,事务自动回滚
using (var context = FluentDataHelper.Context().UseTransaction(true))
{
context.Sql("update Membership set Name = @0 where Id = @1")
.Parameters("李四", )
.Execute(); context.Sql("update Product set Name = @0 where Id = @1")
.Parameters("Product不存在数据库中", )
.Execute();
context.Commit();
}

好了,基本简单的使用到此就已经结束了,如果有兴趣的朋友可以去看看这个的源码,这个是开源的,而且拓展性也是很不错的。

FluentData微型ORM的更多相关文章

  1. FluentData(微型ORM)

    using FluentData; using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  2. ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...

  3. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  4. 【译】微型ORM:PetaPoco【不完整的翻译】

    PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...

  5. 【译】微型ORM:PetaPoco

    PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...

  6. 【译】微型ORM:PetaPoco【不完整的翻译】(转)

    出处:http://www.cnblogs.com/youring2/archive/2012/06/04/2532130.html PetaPoco是一款适用于.Net 和Mono的微小.快速.单文 ...

  7. 微型ORM:PetaPoco 学习资料整理

    github地址:https://github.com/CollaboratingPlatypus/PetaPoco petapoco 实体中字段去掉关联(类似于EF中的NotMap) 微型ORM:P ...

  8. Weed3 for java 新的微型ORM框架

    Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql:存储过程:事务:缓存:监听:等...) 05年时开发了第一代: 08年时开发了第二代,那时候进入互联网 ...

  9. 微型orm fluentdata

    http://fluentdata.codeplex.com/documentation#Query

随机推荐

  1. struts2中改变struts.xml默认路径

    struts2.X配置文件默认存放路径在/WEB-INF/classes目录下,即将struts.xml放在src的目录下. 但是为了方便管理,开发人员把struts.xml放到其他位置,处理方法如下 ...

  2. 漫谈 polling 和 Websocket

    Http被设计成了一个单向的通信的协议,即客户端发起一个request,然后服务器回应一个response.这让服务器很为恼火:我特么才是老大,我居然不能给小弟发消息... 轮询 老大发火了,小弟们自 ...

  3. 【转】第一次使用Android Studio时你应该知道的一切配置

    原文网址:http://www.cnblogs.com/smyhvae/p/4390905.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...

  4. Linux 7 中Yum 配置 说明

    在之前的Blog中写了Linux Yum 的配置方法,参考: Linux 平台下 YUM 源配置 手册 http://www.cndba.cn/account/article/details/154 ...

  5. Jquery图片放大镜

    一般在“在线商城.电子商务.企业产品介绍”等地方经常会看到一些图片放大镜的功能,而做这个功能一般是会用一个js包——enlarge.js(这是jquery图片放大镜的插件).Enlarge 是一个基于 ...

  6. 小技巧--让JS代码只执行一次

    有时候实在是没办法,就像我这个比赛系统中,有一个弹出框,这个弹出框之外都是模糊的(这是在ajax写出弹出框时,加了一个水印). 然而遇到的问题,也是蹊跷古怪,因为这个弹出框的事件是数据查询事件,但是因 ...

  7. IBM笔试题(_与equals的区别)

    http://topic.csdn.net/t/20050325/08/3879427.html 题目:Integer   i   =   new   Integer(42)     Long   l ...

  8. Selenium IDE验证点

    Selenium IDE验证点 我们还开发了测试用例需要检查一个Web页面的属性.这需要维护和验证命令.有两种方法可以验证点到任何脚本 插入记录模式中的任何验证点单击“右键”元素,并选择“Show a ...

  9. 我用dedecms有感

    ---恢复内容开始--- 最近接了一个私单,简单的学校网站,注意,我一看上去是感觉很快,仿站,对方说这个东西你三天就能搞定啦,我也这么想的 (没经验啊) 接下来,我想都没想就用dedecms去做,之前 ...

  10. HDU5780 gcd 欧拉函数

    http://acm.hdu.edu.cn/showproblem.php?pid=5780 BC #85 1005 思路: 首先原式化简:x​^gcd(a,b)​​−1 也就是求n内,(公约数是i的 ...