基于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() 方法创建,还有一种是创建仓储类继承 Repository .如果需要接口也可以创建接口继承 IRepository .

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

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

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

private static ImmutableList _DBModel_PKCols = ImmutableList.Create("SysNo");
public override ImmutableList 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}.示例:

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’是生成实体,仓储及仓储接口的实际代码.大家可以根据自己项目的实际情况修改

原文链接:https://www.cnblogs.com/liningit/p/11059013.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com