mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-09 01:40:56 +08:00
- 修复 WithTempQuery + ToChunkAsyncEnumerable 报错问题;
This commit is contained in:
@@ -621,14 +621,17 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunk(10, e =>
|
||||||
|
{
|
||||||
|
foreach (var item in e.Object)
|
||||||
|
Console.WriteLine(item.Nickname);
|
||||||
|
});
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await foreach (var xxs1 in fsql.Select<User1>().ToChunkAsyncEnumerable(10))
|
await foreach (var xxs1 in fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10))
|
||||||
{
|
{
|
||||||
foreach (var item in xxs1)
|
foreach (var item in xxs1)
|
||||||
{
|
|
||||||
Console.WriteLine(item.Nickname);
|
Console.WriteLine(item.Nickname);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}).Wait();
|
}).Wait();
|
||||||
|
|
||||||
|
|||||||
@@ -718,6 +718,15 @@
|
|||||||
<param name="modelBuilder"></param>
|
<param name="modelBuilder"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
|
||||||
|
<summary>
|
||||||
|
根据Assembly扫描所有继承IEntityTypeConfiguration<T>的配置类
|
||||||
|
</summary>
|
||||||
|
<param name="codeFirst"></param>
|
||||||
|
<param name="assembly"></param>
|
||||||
|
<param name="predicate"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
||||||
<summary>
|
<summary>
|
||||||
创建普通数据上下文档对象
|
创建普通数据上下文档对象
|
||||||
@@ -755,5 +764,13 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Reflection.Assembly[])">
|
||||||
|
<summary>
|
||||||
|
批量注入 Repository,可以参考代码自行调整
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="assemblies"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@@ -234,6 +234,23 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
public void ToChunk(int size, Action<FetchCallbackArgs<List<T1>>> done)
|
public void ToChunk(int size, Action<FetchCallbackArgs<List<T1>>> done)
|
||||||
{
|
{
|
||||||
|
if (_diymemexpWithTempQuery != null && _diymemexpWithTempQuery is WithTempQueryParser withTempQueryParser)
|
||||||
|
{
|
||||||
|
if (withTempQueryParser._outsideTable[0] != _tables[0])
|
||||||
|
{
|
||||||
|
var tps = _tables.Select(a =>
|
||||||
|
{
|
||||||
|
var tp = Expression.Parameter(a.Table.Type, a.Alias);
|
||||||
|
a.Parameter = tp;
|
||||||
|
return tp;
|
||||||
|
}).ToArray();
|
||||||
|
this.InternalToChunk<T1>(tps[0], size, done);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var af = withTempQueryParser._insideSelectList[0].InsideAf;
|
||||||
|
this.ToListMrChunkPrivate(size, done, this.ToSql(af.field), af);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (_selectExpression != null) throw new ArgumentException(CoreErrorStrings.Before_Chunk_Cannot_Use_Select);
|
if (_selectExpression != null) throw new ArgumentException(CoreErrorStrings.Before_Chunk_Cannot_Use_Select);
|
||||||
this.ToListChunkPrivate(size, done, this.GetAllFieldExpressionTreeLevel2(), null);
|
this.ToListChunkPrivate(size, done, this.GetAllFieldExpressionTreeLevel2(), null);
|
||||||
}
|
}
|
||||||
@@ -1769,6 +1786,24 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
public IAsyncEnumerable<List<T1>> ToChunkAsyncEnumerable(int size)
|
public IAsyncEnumerable<List<T1>> ToChunkAsyncEnumerable(int size)
|
||||||
{
|
{
|
||||||
|
if (_diymemexpWithTempQuery != null && _diymemexpWithTempQuery is WithTempQueryParser withTempQueryParser)
|
||||||
|
{
|
||||||
|
if (withTempQueryParser._outsideTable[0] != _tables[0])
|
||||||
|
{
|
||||||
|
var tps = _tables.Select(a =>
|
||||||
|
{
|
||||||
|
var tp = Expression.Parameter(a.Table.Type, a.Alias);
|
||||||
|
a.Parameter = tp;
|
||||||
|
return tp;
|
||||||
|
}).ToArray();
|
||||||
|
return this.InternalToChunkAsyncEnumerable<T1>(tps[0], size);
|
||||||
|
}
|
||||||
|
var af = withTempQueryParser._insideSelectList[0].InsideAf;
|
||||||
|
return new LocalAsyncEnumerable<T1>
|
||||||
|
{
|
||||||
|
_GetAsyncEnumerator = (cancellationToken) => this.ToListMrChunkPrivateAsyncEnumerable<T1>(size, this.ToSql(af.field), af, cancellationToken)
|
||||||
|
};
|
||||||
|
}
|
||||||
if (_selectExpression != null) throw new ArgumentException(CoreErrorStrings.Before_Chunk_Cannot_Use_Select);
|
if (_selectExpression != null) throw new ArgumentException(CoreErrorStrings.Before_Chunk_Cannot_Use_Select);
|
||||||
return this.ToListChunkPrivateAsyncEnumerable(size, this.GetAllFieldExpressionTreeLevel2(), null);
|
return this.ToListChunkPrivateAsyncEnumerable(size, this.GetAllFieldExpressionTreeLevel2(), null);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user