LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也能够自定义分库分表方法.并且能够T4生成实体类免去手写实体类的烦恼.git
文档地址: https://liningit.github.io/LnskyDB/github
开源地址: https://github.com/liningit/LnskyDBsql
nuget地址: https://www.nuget.org/packages/LnskyDB/app
Lambda表达式查询方便
基于Dapper的Lambda表达式扩展能够方便的进行查询筛选操做框架
支持分库分表
默认支持按年分库按月分表,也支持自定义分库分表.今后大数据不用愁测试
T4自动生成实体
有T4模板自动生成实体类,不再用手写那些烦人的实体类了.仓储类及接口也支持自动生成大数据
使用门槛低,快速上手
使用很是简单,能够快速上手ui
本框架只支持单表的Lambda表达式查询,若是多表须要手写sql,框架支持根据sql查询修改等.
另外不太建议连表查询,推荐在逻辑层处理code
上一期咱们写了分库分表的增删改查,这一期咱们写一下不分库分表的增删改查:
var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>(); var entity = repository.Get(new ProductSaleByDayNSEntity { SysNo = sysNo });
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);
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);
var updateEntity = new ProductSaleByDayNSEntity() { SysNo = Guid.Parse("650BC09C-2B9C-467B-A457-8B4853CC1F0F"), DataSource = "测试来源修改", ShopName = "店铺修改" }; var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>(); //根据主键更新其余字段 return repository.Update(updateEntity);
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);
var deleteEntity = new ProductSaleByDayNSEntity() { SysNo = Guid.Parse("650BC09C-2B9C-467B-A457-8B4853CC1F0F") }; var repository = RepositoryFactory.Create<ProductSaleByDayNSEntity>(); return repository.Delete(deleteEntity);
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);