LnskyDB是基於Dapper的Lambda擴展,支持按時間分庫分表,也能夠自定義分庫分表方法.並且能夠T4生成實體類免去手寫實體類的煩惱.git
文檔地址: https://liningit.github.io/LnskyDB/github
開源地址: https://github.com/liningit/LnskyDBsql
nuget地址: https://www.nuget.org/packages/LnskyDB/
前面咱們介紹了LnskyDB的增刪改查操做,接下來咱們結束幾個基礎類.倉儲及實體類還有T4如何生成實體數據庫
倉儲的獲取有兩種方式一種是調用RepositoryFactory.Create<T>()
方法建立,還有一種是建立倉儲類繼承Repository<T>
.若是須要接口也能夠建立接口繼承IRepository<T>
.
倉儲中的CommandTimeout
能夠設置查詢超時時間json
建立實體類需繼承BaseDBModel
,而且實現裏面的抽象方法app
GetDBModel_PKCols()
返回表的主鍵名稱,必須. 示例:ide
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}.示例:code
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'是生成實體,倉儲及倉儲接口的實際代碼.你們能夠根據本身項目的實際狀況修改