Skip to content

Commit 10de974

Browse files
committed
- 修复 v3.2.204 带的的 ToList 子查询 bug;c6fec6a
1 parent f27123e commit 10de974

File tree

4 files changed

+35
-127
lines changed

4 files changed

+35
-127
lines changed

Examples/base_entity/Program.cs

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -616,24 +616,11 @@ static void Main(string[] args)
616616
//if (cmd.CommandText.StartsWith(""))
617617
})
618618
.UseLazyLoading(true)
619-
//.UseGenerateCommandParameterWithLambda(true)
619+
.UseGenerateCommandParameterWithLambda(true)
620620
.Build();
621621
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
622622
#endregion
623623

624-
fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunk(10, e =>
625-
{
626-
foreach (var item in e.Object)
627-
Console.WriteLine(item.Nickname);
628-
});
629-
Task.Run(async () =>
630-
{
631-
await foreach (var xxs1 in fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10))
632-
{
633-
foreach (var item in xxs1)
634-
Console.WriteLine(item.Nickname);
635-
}
636-
}).Wait();
637624

638625
var usergroupRepository = fsql.GetAggregateRootRepository<UserGroup>();
639626
usergroupRepository.Delete(a => true);
@@ -669,14 +656,36 @@ static void Main(string[] args)
669656
ugroupFirst.Sort++;
670657
usergroupRepository.Update(ugroupFirst);
671658
var userRepository = fsql.GetAggregateRootRepository<User1>();
672-
673659
var testsublist1 = fsql.Select<UserGroup>()
674660
.ToList(a => new
675661
{
676662
a.Id,
677663
list = userRepository.Select.Where(b => a.Id == 1).Where(b => b.GroupId == a.Id).ToList(),
678664
list2 = fsql.Select<User1>().Where(b => a.Id == 2).Where(b => b.GroupId == a.Id).ToList(b => b.Nickname),
679665
});
666+
var testsublist2 = fsql.Select<UserGroup, User1>()
667+
.ToList(a => new
668+
{
669+
a.t1.Id,
670+
list = userRepository.Select.Where(b => a.t1.Id == 1).Where(b => b.GroupId == a.t1.Id).ToList(),
671+
list2 = fsql.Select<User1, UserGroup>().Where(b => a.t1.Id == 2).Where(b => b.t1.GroupId == a.t1.Id).ToList(b => b.t1.Nickname),
672+
});
673+
674+
675+
fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunk(10, e =>
676+
{
677+
foreach (var item in e.Object)
678+
Console.WriteLine(item.Nickname);
679+
});
680+
Task.Run(async () =>
681+
{
682+
await foreach (var xxs1 in fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10))
683+
{
684+
foreach (var item in xxs1)
685+
Console.WriteLine(item.Nickname);
686+
}
687+
}).Wait();
688+
680689

681690
Utils.IsStrict = false;
682691
var user1Tb = fsql.CodeFirst.GetTableByEntity(typeof(User11));
@@ -1770,7 +1779,7 @@ static void Main(string[] args)
17701779
Math.PI
17711780
});
17721781

1773-
var testsublist2 = fsql.Select<UserGroup>()
1782+
var testsublist21 = fsql.Select<UserGroup>()
17741783
.GroupBy(a => new { a.Id })
17751784
.WithTempQuery(a => a.Key)
17761785
.First(a => new

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/FreeSql.xml

Lines changed: 1 addition & 110 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ internal static Expression SetSameSelectPendingShareDataWithExpression(Expressio
426426
return exp;
427427
}
428428
callExp = callExpStack.Pop();
429-
Expression newExp = callExp.Object.NodeType == ExpressionType.MemberAccess && typeof(ISelect0).IsAssignableFrom(callExp.Object.Type) ?
429+
Expression newExp = callExp.Object != null && callExp.Object.NodeType == ExpressionType.MemberAccess && typeof(ISelect0).IsAssignableFrom(callExp.Object.Type) ?
430430
new ReplaceMemberExpressionVisitor().Replace(callExp, callExp.Object, Expression.Convert(Expression.Call(
431431
Expression.Convert(callExp.Object, typeof(Select0Provider)),
432432
typeof(Select0Provider).GetMethod(nameof(SetSameSelectPendingShareData), BindingFlags.NonPublic | BindingFlags.Instance),

0 commit comments

Comments
 (0)