LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也能够自定义分库分表方法.并且能够T4生成实体类免去手写实体类的烦恼.git
文档地址: https://liningit.github.io/LnskyDB/github
开源地址: https://github.com/liningit/LnskyDBsql
nuget地址: https://www.nuget.org/packages/LnskyDB/
前面咱们介绍了LnskyDB的增删改查操做,接下来咱们结束几个基础类.仓储及实体类还有T4如何生成实体数据库
仓储的获取有两种方式一种是调用RepositoryFactory.Create<T>()
方法建立,还有一种是建立仓储类继承Repository<T>
.若是须要接口也能够建立接口继承IRepository<T>
.
仓储中的CommandTimeout
能够设置查询超时时间json
建立实体类需继承BaseDBModel
,而且实现里面的抽象方法app
GetDBModel_PKCols()
返回表的主键名称,必须. 示例:ide
private static ImmutableList<string> _DBModel_PKCols = ImmutableList.Create("SysNo"); public override ImmutableList<string> GetDBModel_PKCols() => _DBModel_PKCols;
GetDBModel_IncrementCol();
SetIncrementValue(int value)
返回表的自增列,以及设置自增列值,若有自增列则必须. 示例:日志
public override string GetDBModel_IncrementCol() => "Id"; public override void SetIncrementValue(int value) { Id = value; }
GetDBModel_TableName()
GetDBModel_DBName()
返回表名及库名,必须.若是是分库分表则后面待{0}.示例:code
public override string GetDBModel_TableName() => "Purify_ProductSaleByDay{0}"; public override string GetDBModel_DBName() => "Lnsky{0}";
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
事件
项目'LnskyDB.Demo'中的T4目录下有T4自动生成实体类的代码.你们能够根据本身的实际状况进行修改配置
'DbHelper.ttinclude'中的'Config.DbConfigs'是用来编写生成配置的
'Entity.tt'是生成实体,仓储及仓储接口的实际代码.你们能够根据本身项目的实际状况修改