• 基于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()返回表的主键名称,必须. 示例:

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

    程序员工具站点:草根工具www.idevtool.com  

    个人笔记站点:草根笔记note.idevtool.com

  • 相关阅读:
    MvcApplication 中方法的那点事
    Html 中阻止事件冒泡的三种方法比较
    WPF中 ItemsSource 和DataContext不同点
    解决:Visual Studio 启动就报错退出
    webapi是如何绑定参数的(How WebAPI does Parameter Binding)
    %cd% 和%~dp0%的区别及cd跨盘符切换路径问题
    win10中matlabR2015b安装libsvm
    MATLAB2015b链接MinGW编译器
    网易内推编程题:异或运算求混合颜料的最小种类
    小易喜欢的单词
  • 原文地址:https://www.cnblogs.com/benpao/p/11565987.html
Copyright © 2020-2023  润新知