LnskyDB

LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.

文档地址: https://liningit.github.io/LnskyDB/

开源地址: https://github.com/liningit/LnskyDB

nuget地址: https://www.nuget.org/packages/LnskyDB/

功能特点

  • Lambda表达式查询方便

    基于Dapper的Lambda表达式扩展可以方便的进行查询筛选操作

  • 支持分库分表

    默认支持按年分库按月分表,也支持自定义分库分表.从此大数据不用愁

  • T4自动生成实体

    有T4模板自动生成实体类,再也不用手写那些烦人的实体类了.仓储类及接口也支持自动生成

  • 使用门槛低,快速上手

    使用非常简单,可以快速上手

注意问题

本框架只支持单表的Lambda表达式查询,如果多表需要手写sql,框架支持根据sql查询修改等.

另外不太建议连表查询,推荐在逻辑层处理

开源协议

MIT license.

上一期我们写了分库分表的增删改查,这一期我们写一下不分库分表的增删改查:

不分库分表

查询

  1. 根据主键查询
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
var entity = repository.Get(new ProductSaleByDayNSEntity
{
SysNo = sysNo
});
  1. 根据where条件查询
var stTime = new DateTime(2019, 1, 15);
var endTime = new DateTime(2019, 2, 11);
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
var query = QueryFactory.Create<ProductSaleByDayNSEntity>(m => m.ShopName.Contains("测试"));
query.And(m => m.StatisticalDate >= stTime && m.StatisticalDate < endTime.Date.AddDays(1));
query.OrderByDescing(m => m.StatisticalDate);
query.StarSize = 20; //可以设置查询行数及开始行数
query.Rows = 10;
var lst = repository.GetList(query);
  1. 分页查询
var stTime = new DateTime(2019, 1, 15);
var endTime = new DateTime(2019, 2, 11);
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
var query = QueryFactory.Create<ProductSaleByDayNSEntity>(m => m.ShopName.Contains("测试"));
query.And(m => m.StatisticalDate >= stTime);
query.And(m => m.StatisticalDate < endTime.Date.AddDays(1));
query.OrderByDescing(m => m.StatisticalDate);
query.StarSize = 20;
query.Rows = 10;
var paging = repository.GetPaging(query);
var count = paging.TotalCount;
var lst = paging.ToList();//或者paging.Items

添加

var addEntity = new ProductSaleByDayNSEntity()
{
SysNo = Guid.NewGuid(),
DataSource = "测试来源",
ProductID = Guid.NewGuid(),
ShopID = Guid.NewGuid(),
ShopName = "测试店铺",
ProductName = "测试商品",
OutProductID = Guid.NewGuid().ToString(),
ImportGroupId = Guid.NewGuid(),
StatisticalDate = DateTime.Now
};
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
//如果新增主键是自增列会自动赋值自增列值到主键
repository.Add(addEntity);

更新

  1. 根据主键更新
var updateEntity = new ProductSaleByDayNSEntity()
{
SysNo = Guid.Parse("650BC09C-2B9C-467B-A457-8B4853CC1F0F"),
DataSource = "测试来源修改",
ShopName = "店铺修改"
};
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
//根据主键更新其他字段
return repository.Update(updateEntity);
  1. 根据where条件更新
var updateEntity = new ProductSaleByDayNSEntity()
{
DataSource = "测试来源修改",
ShopName = "店铺修改Where",
DBModel_ShuffledTempDate = new DateTime(2019, 01, 05),
};
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
var where = QueryFactory.Create<ProductSaleByDayNSEntity>(m => m.ShopName == "测试店铺1" && m.StatisticalDate > new DateTime(2019, 01, 03));//where是更新条件
return repository.Update(updateEntity, where);

删除

  1. 根据主键删除
var deleteEntity = new ProductSaleByDayNSEntity()
{
SysNo = Guid.Parse("650BC09C-2B9C-467B-A457-8B4853CC1F0F")
};
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
return repository.Delete(deleteEntity);
  1. 根据where条件删除
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>();
var where = QueryFactory.Create<ProductSaleByDayNSEntity>();
//QueryiSearch方法表示搜索里面空格表示或+表示且
//如 导入+手工 自动+生成 表示字段必须同时拥有导入和手工或者自动和生成
//生成sql是 and ((DataSource like '%导入%' and DataSource like '%手工%') or DataSource like '%自动%' and DataSource like '%生成%')
where.QueryiSearch(m => m.DataSource, "新+更");
where.QueryiSearch(m => m.ShopName, "批量修改");
//注意如果是更新用的是实体类的DBModel_ShuffledTempDate Query中的无效
return repository.Delete(where);

基于Dapper的开源LINQ扩展,且支持分库分表自动生成实体二的更多相关文章

  1. 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. 文档地址: https://lining ...

  2. 基于Dapper的开源Lambda扩展LnskyDB 2.0已支持多表查询

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. 文档地址: https://lining ...

  3. Dapper.Common基于Dapper的开源LINQ超轻量扩展

    Dapper.Common Dapper.Common是基于Dapper的LINQ实现,支持.net core,遵循Linq语法规则.链式调用.配置简单.上手快,支持Mysql,Sqlserver(目 ...

  4. 基于Dapper的开源Lambda扩展LnskyDB 3.0已支持Mysql数据库

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.,现在已经支持MySql和Sql serv ...

  5. 基于Mysql数据库亿级数据下的分库分表方案

    移动互联网时代,海量的用户数据每天都在产生,基于用户使用数据的用户行为分析等这样的分析,都需要依靠数据都统计和分析,当数据量小时,问题没有暴露出来,数据库方面的优化显得不太重要,一旦数据量越来越大时, ...

  6. 基于querybuilder的可根据现有数据表自动生成Restful API的dotnet中间件

    AutoApi 基于SqlKata Query Builder的可根据数据表自动生成Restful API的dotnet中间件 项目地址 Github Gitee 支持的数据库 MySql AutoA ...

  7. 当当开源sharding-jdbc,轻量级数据库分库分表中间件

    近期,当当开源了数据库分库分表中间件sharding-jdbc. Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据 ...

  8. dapper的一个小扩展以支持dataset

    废话不多,直接上方法 public static DataSet ExecuteDataSet(this IDbConnection cnn, IDbDataAdapter adapter, stri ...

  9. 基于ShardingJDBC的分库分表详细整理

    转载 https://www.cnblogs.com/jackion5/p/13658615.html 前言 传统应用项目设计通常都是采用单一数据库作为存储方案,但是随着互联网的迅猛发展以及应用数据量 ...

随机推荐

  1. Kubernetes基础服务架构图

    最近看了一些kubernetes的相关资料, 简单的画了一个原理图 欢迎大家批阅

  2. python 的 encode 、decode、字节串、字符串

    一.摆个图 DJ  DJ  DJ   Decode. J 解码 首先得知道字符串有哪些编码格式,至于为什么会有这么多的编码格式,以后再了解更新. 1.ASCII 占1个字节,只支持英文 2.GB231 ...

  3. Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)

    备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...

  4. cocoapods升级

    1.更新gem:sudo gem update --system 先要查看下源,如果源被墙了就换地址:https://gems.ruby-china.com 1.1.删除gem源:gem source ...

  5. WPF系列 —— 控件添加依赖属性(转)

    WPF系列 —— 控件添加依赖属性 依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 ...

  6. Slf4j 打日志的问题 Exception 没有堆栈信息

    Slf4j 打日志的问题 Exception 没有堆栈信息 发现线上环境有的Exception堆栈信息没打出来,只有异常信息没有堆栈信息,难以定位 一般情况下日志这么打 log.info(" ...

  7. phpcms添加https后台分页错误的解决方法

    今天修改一位客户的phpcms网站,他要求添加https,这对ytkah来说是轻车熟路了,但是后台稍微有点问题,点击分页出现错误,将鼠标移到下一页显示的链接是https://www.abc.com/w ...

  8. 线程三态和JVM线程状态

    1.线程三态:就绪态.运行态.阻塞态 2.JVM中的六种状态 NEW(新建状态):一个尚未启动的线程所处的状态. RUNNABLE(可运行状态):可运行线程的线程状态,可能正在运行,也可能在等待处理器 ...

  9. Babel7 转码

    ES6 (ES2015)更新了很多新的js语法, 也添加了一些新的API, 但不是所有的浏览器对这些新特性都支持的很好, 通过babel可以高版本的js转成低版本的js (ES 5.1), 同时对于J ...

  10. 从零和使用mxnet实现softmax分类

    1.softmax从零实现 from mxnet.gluon import data as gdata from sklearn import datasets from mxnet import n ...