FluentData微型ORM
最近在帮朋友做一个简单管理系统,因为笔者够懒,但是使用过的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的更多相关文章
- FluentData(微型ORM)
using FluentData; using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- 【译】微型ORM:PetaPoco【不完整的翻译】
PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...
- 【译】微型ORM:PetaPoco
PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...
- 【译】微型ORM:PetaPoco【不完整的翻译】(转)
出处:http://www.cnblogs.com/youring2/archive/2012/06/04/2532130.html PetaPoco是一款适用于.Net 和Mono的微小.快速.单文 ...
- 微型ORM:PetaPoco 学习资料整理
github地址:https://github.com/CollaboratingPlatypus/PetaPoco petapoco 实体中字段去掉关联(类似于EF中的NotMap) 微型ORM:P ...
- Weed3 for java 新的微型ORM框架
Weed3,微型ORM框架(支持:java sql,xml sql,annotation sql:存储过程:事务:缓存:监听:等...) 05年时开发了第一代: 08年时开发了第二代,那时候进入互联网 ...
- 微型orm fluentdata
http://fluentdata.codeplex.com/documentation#Query
随机推荐
- GridView表头排序方法设置
1.效果图 2.前台代码 说明:红色代码为核心代码 <asp:GridView ID="gvData" runat="server" AutoGenera ...
- AssetManager asset的使用
Android 系统为每个新设计的程序提供了/assets目录,这个目录保存的文件可以打包在程序里./res 和/assets的不同点是,android不为/assets下的文件生成ID.如果使用/a ...
- error while loading shared libraries: libevent-2.0.so.5解决办法
安装memcache时,需要建立文件索引或者说文件连接(link),类似windows下的快捷方式 启动服务时出现 error while loading shared libraries: libe ...
- Linux busybox mount -a fstab
/*********************************************************************** * Linux busybox mount -a fs ...
- hdu 3496 Watch The Movie
题意:题目给定N部电影,每部电影有时长和价值,要求看M部电影,并且时间控制在L以内,转化为背包问题,让我们在N件物品中找正好M件物品塞进容量L的包中,求最大的价值.// dp[i][j] 表示在容量为 ...
- 【周期串】NYOJ-1121 周期串
[题目链接:NYOJ-1121] 例如:abcabcabc 该字符串的长度为9,那么周期串的长度len只可能为{1,3,9},否则就不可能构成周期串. 接下来,就是要在各周期间进行比较.描述不清... ...
- JAVA JDK1.5-1.9新特性
1.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)3.静态导入4.可变参数5.内省 1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,更强大的JAX-WS5.轻量 ...
- Eclipse小技巧<一>
Eclipse是一款特别好用的开源开发工具,基于插件的特性使其能够进行各种语言的开发.非常喜欢eclipse里的编码风格,感觉这个开发工具十分灵活,又有很多开发的小技巧能够提高开发效率,每次学到一个t ...
- ViewPager 滑动页(三)
需求:滑动展示页,能够使用本地数据,及获取服务器数据进行刷新操作,当滑动到最后一页时,结束当前activity,进入下一个activity: 效果图: 实现分析: 1.目录结构: 代码实现: 1.Po ...
- mac下SSH很快被断开
解决方法: 1. 切换到root账号:sudo bash -c 'su - root' 2. 修改/etc/ssh_config文件 ServerAliveCountMax 5 ServerAlive ...