mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-07 08:50:52 +08:00
- 修复 WithTempQuery + ToChunkAsyncEnumerable 报错问题;
This commit is contained in:
@@ -621,14 +621,17 @@ namespace base_entity
|
||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||
#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 () =>
|
||||
{
|
||||
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)
|
||||
{
|
||||
Console.WriteLine(item.Nickname);
|
||||
}
|
||||
}
|
||||
}).Wait();
|
||||
|
||||
|
||||
@@ -718,6 +718,15 @@
|
||||
<param name="modelBuilder"></param>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
创建普通数据上下文档对象
|
||||
@@ -755,5 +764,13 @@
|
||||
<param name="that"></param>
|
||||
<returns></returns>
|
||||
</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>
|
||||
</doc>
|
||||
|
||||
@@ -234,6 +234,23 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
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);
|
||||
this.ToListChunkPrivate(size, done, this.GetAllFieldExpressionTreeLevel2(), null);
|
||||
}
|
||||
@@ -1769,6 +1786,24 @@ namespace FreeSql.Internal.CommonProvider
|
||||
}
|
||||
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);
|
||||
return this.ToListChunkPrivateAsyncEnumerable(size, this.GetAllFieldExpressionTreeLevel2(), null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user