71

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍

 4 years ago
source link: https://www.tuicool.com/articles/QBNNb2Q
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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 ,并且实现里面的抽象方法

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

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}.示例:

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 

b2Q7ryq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK