Split table

This commit is contained in:
sunkaixuna
2021-11-01 10:19:45 +08:00
parent babb66adef
commit fb45dbcd80
3 changed files with 11 additions and 3 deletions

View File

@@ -23,6 +23,7 @@ namespace OrmTest
db.Aop.OnLogExecuted = (s, p) =>
{
Console.WriteLine(s);
Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
};
//初始化分表
@@ -31,9 +32,9 @@ namespace OrmTest
Console.WriteLine();
//根据最近3个表进行查询
var list=db.Queryable<OrderSpliteTest>().Where(it=>it.Pk==Guid.NewGuid())
.SplitTable(tabs => tabs.Take(3))
.Where(it=>it.Time==DateTime.Now).ToOffsetPage(1,2);
var list=db.Queryable<OrderSpliteTest>()
.SplitTable(DateTime.Now.Date.AddYears(-1),DateTime.Now)
.ToList();
Console.WriteLine();

View File

@@ -889,6 +889,12 @@ namespace SqlSugar
}
return result;
}
public ISugarQueryable<T> SplitTable(DateTime beginTime, DateTime endTime)
{
var splitColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyInfo.GetCustomAttribute<SplitFieldAttribute>() != null);
var columnName = this.SqlBuilder.GetTranslationColumnName(splitColumn.DbColumnName);
return this.Where($" {columnName}>=@spBeginTime AND {columnName}<= @spEndTime",new { spBeginTime = beginTime , spEndTime = endTime}).SplitTable(tas => tas.Where(y => y.Date >= beginTime && y.Date <= endTime));
}
public ISugarQueryable<T> SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
{
SplitTableContext helper = new SplitTableContext(Context)

View File

@@ -183,6 +183,7 @@ namespace SqlSugar
List<dynamic> ToPivotList<TColumn, TRow, TData>(Func<T, TColumn> columnSelector, Expression<Func<T, TRow>> rowSelector, Func<IEnumerable<T>, TData> dataSelector);
string ToPivotJson<TColumn, TRow, TData>(Func<T, TColumn> columnSelector, Expression<Func<T, TRow>> rowSelector, Func<IEnumerable<T>, TData> dataSelector);
ISugarQueryable<T> SplitTable(Func<List<SplitTableInfo>,IEnumerable<SplitTableInfo>> getTableNamesFunc);
ISugarQueryable<T> SplitTable(DateTime beginTime,DateTime endTime);
}
public partial interface ISugarQueryable<T, T2> : ISugarQueryable<T>
{