您的位置:首页 > 数据库

基于.NET C#的 sqlite 数据库 ORM 【Easyliter】

2015-05-13 23:31 483 查看
因为工作原因经常用到SQLITE数据库,但又找不到好用的ORM所以自个整理了一个简单好用的轻量极ORM框架:Easyliter

功能介绍:

1、支持SQL语句操作

2、支持 List<T>和DataTable两种返回格式

3、支持拉姆达表达示进行数据查询和分页

4、内置创建实体类函数

5、依赖于 System.Data.SQLite

使用方法如下:

using Sqlite.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Easyliter;
namespace test
{
class Program
{
static void Main(string[] args)
{

var connstr = "DataSource=" + System.AppDomain.CurrentDomain.BaseDirectory + "mapping.sqllite";

//reference System.Data.SQLite
//引用 System.Data.SQLite
Client e = new Client(connstr);

//Generate entity classes from a database
//从数据库生成实体类
//CreateClassFile(e);

//Delete operation
//删除操作
DeleteData(e);

//update operation
//更新操作
UpdateData(e);

//insert operation
//插入数据
InsertData(e);

//Search operation
//查询操作
Search(e);

//基本操作
//Basic operation
BasicOperation(e);
}

//search operation
//查询操作
private static void Search(Client e)
{
////By sql
List<Product> list = e.Select<Product>("select * from product where  id>@num", new { num = 100 });

//No parameter
List<Category> list2 = e.Select<Category>();

//Single parameter
List<Product> list3 = e.Select<Product>(x => x.id > 200);

//Multiple parameter
List<Product> list4 = e.Select<Product>(x => x.id > 200,
x => x.sku == "skx" || x.sku == null);
//By page
int count = 0;
List<Product> list5 = e.SelectPage<Product>(1, 10, ref count, " id  desc",
x => x.id > 10,//条件1
x => true);//条件2 ...条件N

//Query extenions
var extObj = e.Query<Product>().Where(x => x.id > 10).Where(x => x.id > 2).Select("id,sku")
.OrderBy(El_Sort.asc, "id")
.OrderBy(El_Sort.desc, "sku").Take(100);

//get list
var list6 = extObj.ToList();

//get dataTable
var dataTable = extObj.ToDataTable();

//get single
int num = 500;
var item = e.Query<Product>().Where(c=>c.id==num).Single();

//get first
var first = extObj.First();

//get sql
string sql = extObj.ToSql();

//left join
List<V_Product> VProductList = e.Query<Product>()
.Join<Product, Category>(false /* true is  inner join*/ )
.On(" Product.category_id=Category.id ")
.OrderBy(El_Sort.desc, " Product.id")
.Select("Product.*,Category.name as category_name").JoinWhere("Product.id>300").ToNewList<Product, V_Product>();

//left join
string VProductSql = e.Query<Product>()
.Join<Product, Category>(false /* true is  inner join*/ )
.On(" Product.category_id=Category.id ")
.OrderBy(El_Sort.desc, " Product.id")
.Select("Product.*,Category.name as category_name").JoinWhere("Product.id>300").ToSql();
}

//insert operation
//插入数据
private static void InsertData(Client e)
{
//添加
Product p = new Product()
{
category_id = 2,
sku = "sku",
title = "title"
};
e.Insert<Product>(p);
}

//update operation
//更新操作
private static void UpdateData(Client e)
{
e.Update<Product>(new { sku = "AGA123101", category_id = 1 } /*update columns*/, new { id = 434 }/*where columns*/);
}

//Delete operation
//删除操作
private static void DeleteData(Client e)
{
e.Delete<Product>(100);//primary key
e.Delete<Product>(new int[] { 1, 2, 3 });
}

//Generate entity classes from a database
//从数据库生成实体类
private static void CreateClassFile(Client e)
{
//by database
var createCalss1 = e.CreateClass("Sqlite.Model"/*命名空间*/, @"D:\TFS\EmailBackup\Easyliter\Test\model"/*路径*/);

//by sql
var createCalss2 = e.CreateClassBySql("Sqlite.Model", @"D:\TFS\EmailBackup\Easyliter\Test\model1", "viewproduct", "select id,sku from product ");
}

//基本操作
//Basic operation
private static void BasicOperation(Client e)
{
var dt = e.GetDataTable("select * from product");
var intVal = e.GetInt("select count(*) from product");
var stringVal = e.GetString("select sku from product where id=500 ");
//e.ExecuteNonQuery("inset into ..");
}
}
}


源码地址:http://git.oschina.net/sunkaixuan/easyliter
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: