LnskyDB

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

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

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

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

前面我们介绍了LnskyDB的增删改查操作,接下来我们结束几个基础类.仓储及实体类还有T4如何生成实体

仓储

仓储的获取有两种方式一种是调用RepositoryFactory.Create<T>()方法创建,还有一种是创建仓储类继承Repository<T>.如果需要接口也可以创建接口继承IRepository<T>.

仓储中的CommandTimeout可以设置查询超时时间

实体类

创建实体类需继承BaseDBModel,并且实现里面的抽象方法

1.主键配置

GetDBModel_PKCols()返回表的主键名称,必须. 示例:

private static ImmutableList<string> _DBModel_PKCols = ImmutableList.Create("SysNo");
public override ImmutableList<string> GetDBModel_PKCols() => _DBModel_PKCols;

2.自增列配置

GetDBModel_IncrementCol(); SetIncrementValue(int value)返回表的自增列,以及设置自增列值,如有自增列则必须. 示例:

public override string GetDBModel_IncrementCol() => "Id";
public override void SetIncrementValue(int value)
{
Id = value;
}

3.库名表名配置

GetDBModel_TableName() GetDBModel_DBName()返回表名及库名,必须.如果是分库分表则后面待{0}.示例:

public override string GetDBModel_TableName() => "Purify_ProductSaleByDay{0}";
public override string GetDBModel_DBName() => "Lnsky{0}";

4.分库分表配置

GetShuffledModel() SetShuffledData(object obj)返回分库分表对象,及实现设置分库分表值.示例:

public override ShuffledModel GetShuffledModel()
{
if (DBModel_ShuffledTempDate == DateTime.MinValue)
{
throw new NoShuffledException(GetDBModel_TableName(), "分库分表时间,ShuffledTempDate");
}
return ShuffledByDbTable(DBModel_ShuffledTempDate);
}
DateTime _DBModel_ShuffledTempDate;
[JsonIgnore]
public DateTime DBModel_ShuffledTempDate { get { return StatisticalDate != DateTime.MinValue ? StatisticalDate : _DBModel_ShuffledTempDate; } set { _DBModel_ShuffledTempDate = value; } } public override void SetShuffledData(object obj) { DBModel_ShuffledTempDate = (DateTime)obj; }

错误日志

DBTool.Error事件,当执行sql发生异常会触发DBTool.Error事件

T4模版生成

项目'LnskyDB.Demo'中的T4目录下有T4自动生成实体类的代码.大家可以根据自己的实际情况进行修改配置

'DbHelper.ttinclude'中的'Config.DbConfigs'是用来编写生成配置的

  1. ConnectionString表示连接字符串
  2. Database是表示数据库实际名称
  3. DatabaseName是表示存储在'appsettings.json'中的名称
  4. TableNames表示要生成那些表表示全部Name_表示前缀是Name_的
  5. ExcludeTableName表示要排除那些表
  6. ShuffledConfigs表示分库分表配置存储表名,ShuffledConfig的键值对形式
  7. ShuffledConfig分库分表具体配置ShuffledData根据那一列分库分表,MinShuffledTempDate表示最小值

'Entity.tt'是生成实体,仓储及仓储接口的实际代码.大家可以根据自己项目的实际情况修改

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍的更多相关文章

  1. 基于Dapper的开源LINQ扩展,且支持分库分表自动生成实体二

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

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

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

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

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

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

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

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

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

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

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

  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. libev整体设计

    转自:http://m.blog.csdn.NET/blog/weiqubo/16355653 libev是Marc Lehmann用C写的高性能事件循环库.通过libev,可以灵活地把各种事件组织管 ...

  2. Goutte 获取http response

    $client = new Goutte\Client(); $crawler = $client->request('GET', 'http://symfony.com'); 获取http 响 ...

  3. Win8 Metro(C#) 数字图像处理--1 图像打开,保存

    原文:Win8 Metro(C#) 数字图像处理--1 图像打开,保存 作为本专栏的第一篇,必不可少的需要介绍一下图像的打开与保存,一便大家后面DEMO的制作.   Win8Metro编程中,图像相关 ...

  4. 为什么使用useLegacyV2RuntimeActivationPolicy?

    原文:为什么使用useLegacyV2RuntimeActivationPolicy? 参考:https://msdn.microsoft.com/zh-cn/library/bbx34a2h.asp ...

  5. Win10《芒果TV》商店版更新v3.2.6:修复后台任务故障,优化推送频次

    2017湖南卫视大型音乐竞技节目<歌手>,2017年1月21日晚首播第一期,7位歌手惊艳亮嗓,<芒果TV>UWP版迅速更新v3.2.6版,主要是修复后台任务故障,优化推送频次, ...

  6. 海康威视频监控设备Web查看系统(二):服务器篇

    声明:本系列文章只提供交流与学习使用.文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到.文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自 ...

  7. 下载Cloudera Repo

    wget http://archive-primary.cloudera.com/gplextras5/redhat/6/x86_64/gplextras/cloudera-gplextras5.re ...

  8. EF Power Tool 代码生成器 反向生成

    大致来说,这个工具有这样几个功能: 1) 按照现有数据库结构,生成Code First POCO class.DbContext class和相应的mapping class. 2) 以designe ...

  9. 怎么看待php 面向对象思想

    面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实 ...

  10. SYN4104型 数字网同步时钟

    SYN4104型 数字网同步时钟 产品概述 SYN4104型数字网同步时钟是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度锁相时钟频率源,接收GPS信号,使恒温晶振输出频率同步于GPS卫 ...