Synchronization code

This commit is contained in:
sunkaixuan 2023-04-04 14:36:06 +08:00
parent 59a9725126
commit 803d6356fc
2 changed files with 41 additions and 26 deletions

View File

@ -353,6 +353,40 @@ namespace SqlSugar
#endregion
#region Private methods
private void _ThenMapper<T>(IEnumerable<T> list, Action<T> action)
{
MapperContext<T> result = new MapperContext<T>();
result.context = this.Context;
if (result.context.TempItems == null)
{
result.context.TempItems = new Dictionary<string, object>();
}
var key = "Queryable_To_Context";
result.context.TempItems.Add(key, result);
result.list = list.ToList();
foreach (var item in list)
{
action.Invoke(item);
}
result.context.TempItems.Remove(key);
}
private async Task _ThenMapperAsync<T>(IEnumerable<T> list, Func<T, Task> action)
{
MapperContext<T> result = new MapperContext<T>();
result.context = this.Context;
if (result.context.TempItems == null)
{
result.context.TempItems = new Dictionary<string, object>();
}
var key = "Queryable_To_Context";
result.context.TempItems.Add(key, result);
result.list = list.ToList();
foreach (var item in list)
{
await action.Invoke(item);
}
result.context.TempItems.Remove(key);
}
internal string GetN()
{
var N = "N";

View File

@ -1665,37 +1665,18 @@ namespace SqlSugar
}
public void ThenMapper<T>(IEnumerable<T> list, Action<T> action)
{
MapperContext<T> result = new MapperContext<T>();
result.context = this.Context;
if (result.context.TempItems == null)
this.Context.Utilities.PageEach(list, 200, pageList =>
{
result.context.TempItems = new Dictionary<string, object>();
}
var key = "Queryable_To_Context";
result.context.TempItems.Add(key, result);
result.list = list.ToList();
foreach (var item in list)
{
action.Invoke(item);
}
result.context.TempItems.Remove(key);
_ThenMapper(pageList, action);
});
}
public async Task ThenMapperAsync<T>(IEnumerable<T> list, Func<T, Task> action)
{
MapperContext<T> result = new MapperContext<T>();
result.context = this.Context;
if (result.context.TempItems == null)
await this.Context.Utilities.PageEachAsync(list, 200,async pageList =>
{
result.context.TempItems = new Dictionary<string, object>();
}
var key = "Queryable_To_Context";
result.context.TempItems.Add(key, result);
result.list = list.ToList();
foreach (var item in list)
{
await action.Invoke(item);
}
result.context.TempItems.Remove(key);
await _ThenMapperAsync(pageList, action);
});
}
#endregion
}