基于.NET C#的 sqlite 数据库 ORM 【Easyliter】
因为工作原因经常用到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】的更多相关文章
- C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法
本文实例讲述了C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法.分享给大家供大家参考.具体如下: 这个类不是我实现的,英文原文地址为http://www.egg ...
- 基于三层架构下的公共数据访问方法(Sqlite数据库)
作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...
- 【Win10】在应用中使用 SQLite 数据库
在绝大多数应用中,免不了要做的一项就是设置这样的本地数据存储.简单的数据存储我们可以使用 LocalSettings 或者 IsolatedStorageFile(独立存储)等等的方式来进行本地数据存 ...
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...
- Node的关系型数据库ORM库:bookshelf
NodeJs 关系数据库ORM库:Bookshelf.js bookshelf.js是基于knex的一个关系型数据库的ORM库.简单易用,内置了Promise的支持.这里主要罗列一些使用的例子,例子就 ...
- SQlite数据库框架:LitePal
常用的数据库框架Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.Andr ...
- Django之 数据库ORM
一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...
- Android目前流行三方数据库ORM分析及对比
Android 平台上的数据库框架非常多,但是有一个共同特点就是基于对象关系映射(ORM)模型的.实现的目标也都是不需要写SQL语句,通过对对象的操作保存和操作数据.要是从语法的简洁性来说都有自己的特 ...
- 基于Nodejs的sequelize操纵数据库
## 使用基于ORM架构的sequelize操纵数据库 ### 1.技术背景 ```Sequelize是一个基于promise的关系型数据库ORM框架,*********************技术文 ...
随机推荐
- 使用Webpack和Babel来搭建React应用程序
用Webpack(npm install -g webpack)代码打包,Webpack大致需要知道三件事: 1)让Webpack知道应用程序或js文件的根目录 2)让Webpack知道做何种转换 3 ...
- linux服务器调整参数支持高并发
服务端调整系统的参数,在/etc/sysctl.conf中: ◦net.core.somaxconn = 2048◦net.core.rmem_default = 262144◦net.core.wm ...
- MiniDao-PE精简版
https://github.com/zhangdaiscott/minidao-pe MiniDao-PE精简版 MiniDao-PE 简介及特征 MiniDao-PE 是一种持久化解决方案,类似m ...
- linux下IM server搭建
一步一步开始做. 附录: 一套开源协议:http://www.igniterealtime.org/index.jsp Proso:http://prosody.im/ 那谁网友的笔记http://w ...
- Codeforces Round #271 (Div. 2)题解【ABCDEF】
Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 ...
- 39. Volume Rendering Techniques
Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, D ...
- Mac 上面使用SVN的攻略
参考网站: http://blog.csdn.net/q199109106q/article/details/8655204 SVN命令集: http://www.blogjava.net/jasmi ...
- 阿里前DBA的故事
别人怎么享受生活,与你无关.你怎么磨砺与你有头.引用同事周黄江的一句话,很多人努力程度还远没有到拼天赋的时候. 成功的人都是那种目标很明确的人.对于文中厨师的经历很感兴趣.不管是IT还是餐饮,哪个行业 ...
- C#实现IDispose接口
.net的GC机制有两个问题:首先GC并不能释放所有资源,它更不能释放非托管资源.其次,GC也不是实时的,所有GC存在不确定性.为了解决这个问题donet提供了析构函数 public class Te ...
- ExtJs 可查询的下拉框
最近项目中有个需求,就是有四个模块需要加载一个主表的内容,比如说这个表叫项目表(比如项目表里有两个字段一个是项目ID--projCd,还有一个是项目名称--projNm).主表的内容的要放在一个下拉框 ...