歡迎光臨
每天分享高質量文章

基於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()方法創建,還有一種是創建倉儲類繼承Repository.如果需要接口也可以創建接口繼承IRepository.
倉儲中的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)傳回分庫分表物件,及實現設置分庫分表值.示例:

 

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’是生成物體,倉儲及倉儲接口的實際代碼.大家可以根據自己專案的實際情況修改

赞(0)

分享創造快樂