当前位置: 移动技术网 > IT编程>开发语言>.net > 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍

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

2019年06月21日  | 移动技术网IT编程  | 我要评论

滴露消毒液,帝王之路黑道颠峰,网址 你懂得

lnskydb github stars github forks

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; }

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网