基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体基础
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()
返回表的主键名称,必须. 示例:
12 | private static ImmutableList< string > _DBModel_PKCols = ImmutableList.Create( "SysNo" ); public override ImmutableList< string > GetDBModel_PKCols() => _DBModel_PKCols; |
2.自增列配置
GetDBModel_IncrementCol();
SetIncrementValue(int value)
返回表的自增列,以及设置自增列值,如有自增列则必须. 示例:
12345 | public override string GetDBModel_IncrementCol() => "Id" ; public override void SetIncrementValue( int value) { Id = value; } |
3.库名表名配置
GetDBModel_TableName()
GetDBModel_DBName()
返回表名及库名,必须.如果是分库分表则后面待{0}.示例:
12 | public override string GetDBModel_TableName() => "Purify_ProductSaleByDay{0}" ; public override string GetDBModel_DBName() => "Lnsky{0}" ; |
4.分库分表配置
GetShuffledModel()SetShuffledData(object obj)
返回分库分表对象,及实现设置分库分表值.示例:
12345678910111213 | 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'是用来编写生成配置的
- ConnectionString表示连接字符串
- Database是表示数据库实际名称
- DatabaseName是表示存储在'appsettings.json'中的名称
- TableNames表示要生成那些表表示全部Name_表示前缀是Name_的
- ExcludeTableName表示要排除那些表
- ShuffledConfigs表示分库分表配置存储表名,ShuffledConfig的键值对形式
- ShuffledConfig分库分表具体配置ShuffledData根据那一列分库分表,MinShuffledTempDate表示最小值
'Entity.tt'是生成实体,仓储及仓储接口的实际代码.大家可以根据自己项目的实际情况修改
更新于:16天前相关文章
- 10个c#基础面试题和答案
- DynamoDB 数据转换安全性:从手动工作到自动化和开源
- Vue3 快速入门及巩固基础
- 开源软件:释放创新的力量,改变数字世界的游戏规则
- 面向设计师、开发者的开源免费图标库
- 免费开源的开发工具DevToys
- 免费开源的远程桌面软件RustDesk官网下载
- 开源中文LLaMA2模型 Chinese-Llama-2-7b
- 开源去马赛克工具Depix用法
- 开源远程支持软件RustDesk官网下载
- 基于Vue的免费开源admin管理后台框架
- .Net开源框架列表
- TP6.0 基础控制器初始化方法中的重定向无效
- TP6.0 基础控制器登录流 v0.0.1
- 免费开源WinForm UI控件库ReaLTaiizor
- vscode中自动将json格式的内容自动生成对应的代码
- ScottPlot:功能强大且开源免费的C#绘图控件
- VSCode开源吗?可以基于VSCode开发商业IDE吗?
- 有哪些C/C++的开源项目可以给系统的学习C/C++语言做参考呢?
- 掌握C++基础语法,打造高效编程能力