mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
Split table
This commit is contained in:
parent
22dc0ff39e
commit
b5cff787de
@ -48,10 +48,16 @@ namespace OrmTest
|
||||
Console.WriteLine();
|
||||
|
||||
var tableName = db.SplitHelper<OrderSpliteTest>().GetTableName(DateTime.Now.AddDays(-1));
|
||||
var tableName2 = db.SplitHelper(new OrderSpliteTest() { Time=DateTime.Now}).GetTableNames();
|
||||
var tableName3 = db.SplitHelper(new List<OrderSpliteTest> {
|
||||
new OrderSpliteTest() { Time = DateTime.Now },
|
||||
new OrderSpliteTest() { Time = DateTime.Now },
|
||||
new OrderSpliteTest() { Time = DateTime.Now.AddMonths(-10) }
|
||||
}).GetTableNames();
|
||||
var x2 = db.Updateable<OrderSpliteTest>()
|
||||
.SetColumns(it=>it.Name=="a")
|
||||
.Where(it => it.Pk == Guid.NewGuid())
|
||||
.SplitTable(tabs => tabs.InTableNames(tableName))
|
||||
.SplitTable(tabs => tabs.InTableNames(tableName2))
|
||||
.ExecuteCommand();
|
||||
|
||||
Console.WriteLine();
|
||||
|
@ -1133,5 +1133,40 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Split table
|
||||
public SplitTableContext SplitHelper<T>()
|
||||
{
|
||||
var result = new SplitTableContext(this.Context)
|
||||
{
|
||||
EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>()
|
||||
};
|
||||
return result;
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(T data)
|
||||
{
|
||||
var result = new SplitTableContext(this.Context)
|
||||
{
|
||||
EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>()
|
||||
};
|
||||
return new SplitTableContextResult<T>()
|
||||
{
|
||||
Items = new List<T> { data },
|
||||
Helper = result
|
||||
};
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(List<T> data)
|
||||
{
|
||||
var result = new SplitTableContext(this.Context)
|
||||
{
|
||||
EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>()
|
||||
};
|
||||
return new SplitTableContextResult<T>()
|
||||
{
|
||||
Items = data,
|
||||
Helper = result
|
||||
};
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,8 @@ namespace SqlSugar
|
||||
|
||||
#region Other methods
|
||||
SplitTableContext SplitHelper<T>();
|
||||
SplitTableContextResult<T> SplitHelper<T>(T data);
|
||||
SplitTableContextResult<T> SplitHelper<T>(List<T> data);
|
||||
DateTime GetDate();
|
||||
//SimpleClient GetSimpleClient();
|
||||
SimpleClient<T> GetSimpleClient<T>() where T : class, new();
|
||||
|
@ -8,6 +8,32 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class SplitTableContextResult<T>
|
||||
{
|
||||
public List<T> Items { get; set; }
|
||||
public SplitTableContext Helper { get; set; }
|
||||
|
||||
public string [] GetTableNames()
|
||||
{
|
||||
List<string> result = new List<string>();
|
||||
var attribute = typeof(T).GetCustomAttribute<SplitTableAttribute>() as SplitTableAttribute;
|
||||
Check.Exception(attribute == null, $" {typeof(T).Name} need SplitTableAttribute");
|
||||
foreach (var item in Items)
|
||||
{
|
||||
result.Add(Helper.GetTableName(Helper.GetValue(attribute.SplitType,item)));
|
||||
}
|
||||
return result.Distinct().ToArray();
|
||||
}
|
||||
public string[] GetTableNames(SplitType splitType)
|
||||
{
|
||||
List<string> result = new List<string>();;
|
||||
foreach (var item in Items)
|
||||
{
|
||||
result.Add(Helper.GetTableName(Helper.GetValue(splitType, item)));
|
||||
}
|
||||
return result.ToArray();
|
||||
}
|
||||
}
|
||||
public class SplitTableContext
|
||||
{
|
||||
internal SqlSugarProvider Context { get; set; }
|
||||
|
@ -848,11 +848,15 @@ namespace SqlSugar
|
||||
#region Helper
|
||||
public SplitTableContext SplitHelper<T>()
|
||||
{
|
||||
var result = new SplitTableContext(this.Context)
|
||||
{
|
||||
EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>()
|
||||
};
|
||||
return result;
|
||||
return this.Context.SplitHelper<T>();
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(T data)
|
||||
{
|
||||
return this.Context.SplitHelper(data);
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(List<T> dataList)
|
||||
{
|
||||
return this.Context.SplitHelper(dataList);
|
||||
}
|
||||
private SqlSugarProvider GetContext()
|
||||
{
|
||||
|
@ -600,6 +600,14 @@ namespace SqlSugar
|
||||
{
|
||||
return ScopedContext.SplitHelper<T>();
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(T data)
|
||||
{
|
||||
return ScopedContext.SplitHelper(data);
|
||||
}
|
||||
public SplitTableContextResult<T> SplitHelper<T>(List<T> dataList)
|
||||
{
|
||||
return ScopedContext.SplitHelper(dataList);
|
||||
}
|
||||
public SqlSguarTransaction UseTran()
|
||||
{
|
||||
return ScopedContext.UseTran();
|
||||
|
Loading…
Reference in New Issue
Block a user