LnskyDB <https://github.com/liningit/LnskyDB/stargazers>
<https://github.com/liningit/LnskyDB/fork>

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

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

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

nuget地址: https://www.nuget.org/packages/LnskyDB/
<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; }
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'是生成实体,仓储及仓储接口的实际代码.大家可以根据自己项目的实际情况修改