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("李四", 12)
.Execute(); context.Sql("update Product set Name = @0 where Id = @1")
.Parameters("Product不存在数据库中", 1)
.Execute();
context.Commit();
}

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

最新文章

  1. [LeetCode] Island Perimeter 岛屿周长
  2. c# 中int.ToString()的格式化的示例
  3. jquery ajax post 中文乱码解决
  4. ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法
  5. C++ 数组长度 以及 数组名作为参数传递给函数 以及 为什么不在子函数中求数组长度
  6. floyd算法 青云的机房组网方案(简单)
  7. JSP 页面打印
  8. UVa 673 Parentheses Balance【栈】
  9. 转载--SQL Server 2005的XQuery介绍
  10. AndroidManifest.xml--android系统权限定义
  11. DropDownList自动生成年月日
  12. centos7.4下离线安装CDH5.7
  13. ethtool确定网卡对应的物理网口
  14. Linux~Sh脚本一点自己的总结
  15. Canvas中的非零环绕
  16. PageHelper 自动去掉排序参数问题
  17. python之subprocess模块详解--小白博客
  18. vue-10-混合
  19. ionic打包步骤(安卓)
  20. 第40章 CAN—通讯实验—零死角玩转STM32-F429系列

热门文章

  1. Html.Partial(&quot;&quot;)与Html.RenderPartial(&quot;&quot;)区别
  2. HTTP数据包头解析(简单清楚)
  3. c#中,DataTable 过滤重复行
  4. jvm常用参数设置 good
  5. javascript创建类的6种方式
  6. D7升级时候发现许多System函数和网络函数只有Byte版本的,需要注意
  7. php中include文件变量作用域的研究
  8. JSTL解析——004——core标签库03
  9. 11 款最好 CSS 框架 让你的网站独领风骚
  10. poj1639 Picnic Planning 最小度数限制生成树