因为工作原因经常用到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 = }); //No parameter
List<Category> list2 = e.Select<Category>(); //Single parameter
List<Product> list3 = e.Select<Product>(x => x.id > ); //Multiple parameter
List<Product> list4 = e.Select<Product>(x => x.id > ,
x => x.sku == "skx" || x.sku == null);
//By page
int count = ;
List<Product> list5 = e.SelectPage<Product>(, , ref count, " id desc",
x => x.id > ,//条件1
x => true);//条件2 ...条件N //Query extenions
var extObj = e.Query<Product>().Where(x => x.id > ).Where(x => x.id > ).Select("id,sku")
.OrderBy(El_Sort.asc, "id")
.OrderBy(El_Sort.desc, "sku").Take(); //get list
var list6 = extObj.ToList(); //get dataTable
var dataTable = extObj.ToDataTable(); //get single
int num = ;
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 = ,
sku = "sku",
title = "title"
};
e.Insert<Product>(p);
} //update operation
//更新操作
private static void UpdateData(Client e)
{
e.Update<Product>(new { sku = "AGA123101", category_id = } /*update columns*/, new { id = }/*where columns*/);
} //Delete operation
//删除操作
private static void DeleteData(Client e)
{
e.Delete<Product>();//primary key
e.Delete<Product>(new int[] { , , });
} //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

基于.NET C#的 sqlite 数据库 ORM 【Easyliter】的更多相关文章

  1. C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法

    本文实例讲述了C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法.分享给大家供大家参考.具体如下: 这个类不是我实现的,英文原文地址为http://www.egg ...

  2. 基于三层架构下的公共数据访问方法(Sqlite数据库)

    作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...

  3. 【Win10】在应用中使用 SQLite 数据库

    在绝大多数应用中,免不了要做的一项就是设置这样的本地数据存储.简单的数据存储我们可以使用 LocalSettings 或者 IsolatedStorageFile(独立存储)等等的方式来进行本地数据存 ...

  4. Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...

  5. Node的关系型数据库ORM库:bookshelf

    NodeJs 关系数据库ORM库:Bookshelf.js bookshelf.js是基于knex的一个关系型数据库的ORM库.简单易用,内置了Promise的支持.这里主要罗列一些使用的例子,例子就 ...

  6. SQlite数据库框架:LitePal

    常用的数据库框架Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.Andr ...

  7. Django之 数据库ORM

    一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...

  8. Android目前流行三方数据库ORM分析及对比

    Android 平台上的数据库框架非常多,但是有一个共同特点就是基于对象关系映射(ORM)模型的.实现的目标也都是不需要写SQL语句,通过对对象的操作保存和操作数据.要是从语法的简洁性来说都有自己的特 ...

  9. 基于Nodejs的sequelize操纵数据库

    ## 使用基于ORM架构的sequelize操纵数据库 ### 1.技术背景 ```Sequelize是一个基于promise的关系型数据库ORM框架,*********************技术文 ...

随机推荐

  1. StringBuffer&StringBuilder区别详解

    序言 StringBuffer与StringBuilder是java.lang包下被大家熟知的两个类.其异同为:一.长度都是可扩充的:二.StringBuffer是线程安全的,StringBuilde ...

  2. 配置CENTOS YUM更新源

    众所周知,Centos 有个很方便的软件安装工具  yum,但是默认安装完centos,系统里使用的是国外的centos更新源,这就造成了我们使用默认更新源安装或者更新软件时速度很慢的问题. 为了使用 ...

  3. linux服务器调整参数支持高并发

    服务端调整系统的参数,在/etc/sysctl.conf中: ◦net.core.somaxconn = 2048◦net.core.rmem_default = 262144◦net.core.wm ...

  4. arcgis手动启动服务提示端口4000被使用

    具体解决办法 参考 http://hi.baidu.com/xjx19860908/item/6b46376d92044694c4d249f6该博文. 手动启动,提示4000端口被占用,去查找4000 ...

  5. 进程间通信(IPC)介绍

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息. IPC的方式通常有管道(包括无名管道和命名管道).消息队列.信号量.共享存储.Socket ...

  6. vs2010 使用vs online账号 需要安装的插件

    VS10SP1-KB2662296.exe http://pan.baidu.com/s/1qWDpEG0 vs2010 需要先升级到SP1

  7. asp Gridview绑定形式获取行号

    Gridview中使用<%# Container.DataItemIndex %>取得当前行的序号 而在Repeater控件中使用Container.ItemIndex取得当前行的序号 & ...

  8. 是时候放弃sublime了

    今天下午在忍无可忍之下终于卸载了sublime,最为一个在gui下最顺手的编辑器,放弃是需要非常充足的理由的. 放弃sublime无非是因为以下几点原因: 收费.我用的是未注册版的sublime,保存 ...

  9. Discuz! 的编码规范

    http://open.discuz.net/?ac=document&page=dev_coderule 前言 本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形 ...

  10. 无法import的原因(ImportError: No module named *****)

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...