基于.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框架,*********************技术文 ...
随机推荐
- Android composite adb interface
我的平板连上电脑后,在eclipse的DDMS中查看不到.很奇怪以前不会,我以为在进程中有其他的adb.exe冲突.查看任务管理器没有看到其他adb.exe进程.然后重启eclipse也不用,重启电脑 ...
- C#转C++的一点分享
前几天看到这样一篇博客<那些年·我们读过的专业书籍>,里面列了很多大家认为很好的书,加上自己在自学C++的工程中也看了不少书,感觉并不是所有的书都值得花时间去看的,毕竟很多人一年下来也看不 ...
- RPM -U 升级机制探索
今天被RPM升级机制狠狠的阴了一把,差点没过来,趁着热乎赶紧记录下来,已被后用. RPM包有升级机制(Upgrade), 使用-U 参数.这点我之前略有耳闻,知道的并不详细. 先说说案例:半年前我们r ...
- IOS中的网络编程
在移动互联网时代,几乎所有应用都需要用到网络下载,比如图片的加载,音乐的下载,安装包的下载,等等,下面我们来看看如何进行下载 一.文件的下载我们用get来请求数据,并对请求的二进制数据进行解析存入文件 ...
- Django 源码小剖: URL 调度器(URL dispatcher)
在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 URL. 这是 django url 匹配处理机制的 ...
- 提示Can't load package:dclite70.bpl解决方法
64位系统安装Delphi7提示Can’t load package:dclite70.bpl 2015年04月05日 ⁄ 杂谈 ⁄ 共 392字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 1,7 ...
- 微信中直接下载APK
某天在微信中偶遇一个二维码,识别二维码竟然可以直接下载APK! 该二维码如下: 解码后获得地址:(在线解码工具) http://www.rmdown.com/newt66y.apk 这不就是个普通的A ...
- [转]Raspberry Pi做成路由器
http://raspjason.blog.51cto.com/8565009/1426561/ 曾经看到很多文章把Raspberry Pi制作成无线AP,但是我今天要做的是把Raspberry Pi ...
- 可编辑的DIV -编辑器
找了好多,没几个好用的,都或多或少有问题 目前这个最好用.. 不过有一个奇葩的问题,就是要放在"<a></a>"标签里面, js或者jQuery获取 $ ...
- Android QQ空间浏览图片动画特效的实现(※)
1 http://blog.csdn.net/yangblocker/article/details/12680247 2 photoview 3 nineoldandroid