Add Insertable.Page

This commit is contained in:
sunkaixuan
2023-08-24 13:44:17 +08:00
parent 51a6c858aa
commit b641e30d07
4 changed files with 77 additions and 1 deletions

View File

@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class InsertablePage<T> where T:class,new()
{
public int PageSize { get; set; }
public SqlSugarProvider Context { get; set; }
public T[] DataList { get; set; }
public string TableName { get; internal set; }
public List<string> InsertColumns { get; internal set; }
public bool IsEnableDiffLogEvent { get; internal set; }
public DiffLogModel DiffModel { get; internal set; }
public int ExecuteCommand()
{
if (PageSize == 0) { PageSize = 1000; }
var result = 0;
this.Context.Utilities.PageEach(DataList, PageSize, pageItem =>
{
result += this.Context.Insertable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent,DiffModel).InsertColumns(InsertColumns.ToArray()).ExecuteCommand();
});
return result;
}
public async Task<int> ExecuteCommandAsync()
{
if (PageSize == 0) { PageSize = 1000; }
var result = 0;
await this.Context.Utilities.PageEachAsync(DataList, PageSize,async pageItem =>
{
result += await this.Context.Insertable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).InsertColumns(InsertColumns.ToArray()).ExecuteCommandAsync();
});
return result;
}
public List<long> ExecuteReturnSnowflakeIdList()
{
if (PageSize == 0) { PageSize = 1000; }
var result = new List<long>();
this.Context.Utilities.PageEach(DataList, PageSize, pageItem =>
{
result.AddRange( this.Context.Insertable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).InsertColumns(InsertColumns.ToArray()).ExecuteReturnSnowflakeIdList());
});
return result;
}
public async Task<List<long>> ExecuteReturnSnowflakeIdListAsync()
{
if (PageSize == 0) { PageSize = 1000; }
var result = new List<long>();
await this.Context.Utilities.PageEachAsync(DataList, PageSize,async pageItem =>
{
result.AddRange(await this.Context.Insertable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).InsertColumns(InsertColumns.ToArray()).ExecuteReturnSnowflakeIdListAsync());
});
return result;
}
}
}

View File

@@ -465,7 +465,18 @@ namespace SqlSugar
#endregion
#region Setting
public InsertablePage<T> PageSize(int pageSize)
{
InsertablePage<T> result = new InsertablePage<T>();
result.PageSize = pageSize;
result.Context = this.Context;
result.DataList = this.InsertObjs;
result.TableName = this.InsertBuilder.AsName;
result.IsEnableDiffLogEvent = this.IsEnableDiffLogEvent;
result.DiffModel = this.diffModel;
result.InsertColumns = this.InsertBuilder.DbColumnInfoList.GroupBy(it => it.TableId).First().Select(it=>it.DbColumnName).ToList();
return result;
}
public IParameterInsertable<T> UseParameter()
{
var result = new ParameterInsertable<T>();

View File

@@ -62,5 +62,6 @@ namespace SqlSugar
void AddQueue();
IInsertable<T> MySqlIgnore();
IInsertable<T> OffIdentity();
InsertablePage<T> PageSize(int pageSize);
}
}

View File

@@ -120,6 +120,7 @@
<Compile Include="Abstract\FastestProvider\Setting.cs" />
<Compile Include="Abstract\FastestProvider\SplitFastest.cs" />
<Compile Include="Abstract\FilterProvider\FilterProvider.cs" />
<Compile Include="Abstract\InsertableProvider\InsertablePage.cs" />
<Compile Include="Abstract\InsertableProvider\InsertableHelper.cs" />
<Compile Include="Abstract\InsertableProvider\InsertMethodInfo.cs" />
<Compile Include="Abstract\QueryableProvider\Entities\AppendNavInfoList.cs" />
@@ -142,11 +143,13 @@
<Compile Include="Abstract\QueryableProvider\QueryMethodInfo.cs" />
<Compile Include="Abstract\SaveableProvider\StorageableMethodInfo.cs" />
<Compile Include="Abstract\SaveableProvider\StorageableDataTable.cs" />
<Compile Include="Abstract\SaveableProvider\StorageablePage.cs" />
<Compile Include="Abstract\SaveableProvider\StorageableSplitProvider.cs" />
<Compile Include="Abstract\SqlBuilderProvider\Entities.cs" />
<Compile Include="Abstract\SqlBuilderProvider\SqlBuilderProvider_Condition.cs" />
<Compile Include="Abstract\SugarProvider\SqlSugarCoreProvider.cs" />
<Compile Include="Abstract\DeleteProvider\DeleteMethodInfo.cs" />
<Compile Include="Abstract\UpdateProvider\UpdateablePage.cs" />
<Compile Include="Abstract\UpdateProvider\UpdateableProviderT2.cs" />
<Compile Include="Abstract\UpdateProvider\UpdateableProviderT3.cs" />
<Compile Include="Abstract\UpdateProvider\UpdateableProviderT4.cs" />