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();
}

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

FluentData的更多相关文章

  1. FluentData(微型ORM)

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

  2. 在不安装mysql-connector-net的情况下使用FluentData框架

    最近在开发项目中使用了FluentData框架,通过使用这个框架减少了很多开发的工作量,FluentData是一个轻量级的框架操作起来的自由度很大也少了很多负责的配置.但是在开发的时候发现一个问题就是 ...

  3. 微型orm fluentdata

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

  4. FluentData Mysql分页的一个BUG

    开发环境 FluentData3.0.VS.NET2010.Mysql5.0 问题描述 使用FluentData对一个表(记录数28)进行分页时,突然发现一个诡异的问题,第一页返回10条数据正常,第二 ...

  5. FluentData,它是一个轻量级框架,关注性能和易用性。

    http://www.cnblogs.com/zengxiangzhan/p/3250105.html FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.M ...

  6. 快速上手如何使用FluentData

    http://blog.itpub.net/29511780/viewspace-1194048/ 目录:  一.什么是ORM? 二.使用ORM的优势 三.使用ORM的缺点 四.NET下的ORM框架有 ...

  7. FluentData官方文档翻译

    开始 要求 .NET 4.0. 支持的数据库 MS SQL Server using the native .NET driver. MS SQL Azure using the native .NE ...

  8. FluentData微型ORM

    最近在帮朋友做一个简单管理系统,因为笔者够懒,但是使用过的NHibernate用来做这中项目又太不实际了,索性百度了微型ORM,FluentData是第一个跳入我眼睛的词.简单的了解下FluentDa ...

  9. Oracle+FluentData+MVC4+EasyUI开发权限管理系统之开篇

    在园子里有很多EF+MVC+EasyUI的框架实在是太多了,经过在一段时间的学习高手写的思路,但是都是针对Sql数据的,但是今年我当上研发组组长的第一个任务就是编写一个通用平台框架,一刚开始想把学习过 ...

  10. orm fluentdata使用相关文章

    微型orm fluentdata使用:http://www.360doc.com/content/12/1228/23/9200790_256885743.shtml

随机推荐

  1. BCB/Delphi中常用的VCL函数说明(字符串函数)

    本文档是ccrun(老妖)根据网上资料整理而成. --------------------内存分配--------------------函数名称:AllocMem函数说明:在队中分配指定字节的内存块 ...

  2. Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObje ...

  3. go iota

    package main import ( "fmt" ) const ( a = 'A' b c = iota d ) func main() { fmt.Println(a) ...

  4. 《转载》常用算法经典代码(C++版)

    转自:http://blog.renren.com/blog/311453043/736944237 一.快速排序 void qsort(int x,int y) //待排序的数据存放在a[1]..a ...

  5. 读一读Scktsrvr.exe的源程序

    读一读Scktsrvr.exe的源程序 使用DELPHI做多层开发的朋友们都应该对Scktsrvr.exe这个程序不陌生的,Borland公司在DELPHI中给出了它的源代码.这是一个900来行的程序 ...

  6. 14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发

    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发 InnoDB 使用操作系统threads 来处理用户的事务请求.(事务可以执行 ...

  7. Java Web Services (1) - 第1章 Web服务快速入门

    SCRIPTS_DIR=/Users/liuzhaofu/opus-dev/product/tools/devPRODUCT_DIR=/Users/liuzhaofu/opus-dev/product ...

  8. Codeforces 474B Worms 二分法(水

    主题链接:http://codeforces.com/contest/474/problem/B #include <iostream> #include <cmath> #i ...

  9. boost库在工作(33)网络服务端之三

    在这个例子里,表示服务器与一个客户端的沟通渠道,就是一个连接,封装为类CConnect.它是当服务器接收到一个客户端连接请求之后创建的,主要用来就是管理这个连接的生命周期,以及数据的接收和发送.从生命 ...

  10. VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布(好像很不错,有六张插图说明)good

    为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...