

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍
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.

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
Recommend
-
54
-
46
前言 去年我在业余时间,自己整了一套dapper的lambda表达式的封装,原本是作为了一个个人的娱乐项目,当时也只支持了Sql Server数据库。随之开源后,有不少朋友也对此做了试用,也对我这个项
-
8
基于PostgreSQL各种扩展派生的开源数据库名单Greenplum:用于分析的大规模并行 Postgres,用于分析、机器学习和人工智能的开源大规模并行数据平台。 Hadapt:在Hadapt中,一个(Postgres)数据库放置在Hadoop群集的节点中,从而可以使用MapReduce...
-
8
谷歌与Dapper Labs合作为Flow区块链提供支持 作者:SAM BOURGI | 编译者:Maya | 来源:Cointelegraph时间:20...
-
6
最近我在研究 Istio 生态中的开源项目,Slime 这个项目开源与 2021 年初,是由网易数帆微服务团队开源的一款基于 Istio 的智能网格管理器。Slime 基于 Kubernetes Operator 实现,可作为 Istio 的 CRD 管理器...
-
9
前几天偶然看到了dapper,由于以前没有用过,只用过ef core,稍微看了一下,然后写了一些简单的可复用的封装。 Dapper的用法比较接近ADO.NET所以性能也是比较快。所以我们先来看看使用ADO.NET的时候我们怎么实现代码...
-
11
PHP扩展开发-自动生成扩展骨架 2018-03-29 PHP扩展编译有两种方式 作为一个可装载模块或者DSO(动态共享对象) 静态编译到PHP 静态编译的方式直接和PH...
-
9
MySQLD Exporter 插件基于标准的 MySQLD Exporter 实现。Rainbond 自带的 Prometheus 监控系统 rbd-monitor 会收集 Exporter 中的数据,并通过监控面板展示出来。用户可以自定义展示哪些关键性能数据的指标,这是监控 Mysql 数据库服务的不二之选。
-
5
作者:京东物流 王北永 姚再毅 日常开发过程中,尤其在 DDD 过程中,经常遇到 VO/MODEL/PO 等领域模型的相互转换。此时我们会一个字段一个字段进行 set|get 设置。要么使用工具类进行暴力的属性拷贝,在这个暴力属性拷贝过程中好的工具更能...
-
8
在C#众多ORM框架中,Dapper绝对称得上微型ORM之王,Dapper以灵活、性能好而著名,同样也是支持各种数据库,但是对于一些复杂的查询,我们写原生的SQL语句问题不大,对于CRUD基本操作,我们同样也是需要写原生的SQL来实现,这个就比较麻烦了。 今天给大家推荐...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK