diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 7eb2d7e13..8b7a867fa 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -616,24 +616,11 @@ namespace base_entity //if (cmd.CommandText.StartsWith("")) }) .UseLazyLoading(true) - //.UseGenerateCommandParameterWithLambda(true) + .UseGenerateCommandParameterWithLambda(true) .Build(); BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion - fsql.Select().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().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10)) - { - foreach (var item in xxs1) - Console.WriteLine(item.Nickname); - } - }).Wait(); var usergroupRepository = fsql.GetAggregateRootRepository(); usergroupRepository.Delete(a => true); @@ -669,7 +656,6 @@ namespace base_entity ugroupFirst.Sort++; usergroupRepository.Update(ugroupFirst); var userRepository = fsql.GetAggregateRootRepository(); - var testsublist1 = fsql.Select() .ToList(a => new { @@ -677,6 +663,29 @@ namespace base_entity list = userRepository.Select.Where(b => a.Id == 1).Where(b => b.GroupId == a.Id).ToList(), list2 = fsql.Select().Where(b => a.Id == 2).Where(b => b.GroupId == a.Id).ToList(b => b.Nickname), }); + var testsublist2 = fsql.Select() + .ToList(a => new + { + a.t1.Id, + list = userRepository.Select.Where(b => a.t1.Id == 1).Where(b => b.GroupId == a.t1.Id).ToList(), + list2 = fsql.Select().Where(b => a.t1.Id == 2).Where(b => b.t1.GroupId == a.t1.Id).ToList(b => b.t1.Nickname), + }); + + + fsql.Select().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().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10)) + { + foreach (var item in xxs1) + Console.WriteLine(item.Nickname); + } + }).Wait(); + Utils.IsStrict = false; var user1Tb = fsql.CodeFirst.GetTableByEntity(typeof(User11)); @@ -1770,7 +1779,7 @@ var sql11111 = fsql.Select() Math.PI }); - var testsublist2 = fsql.Select() + var testsublist21 = fsql.Select() .GroupBy(a => new { a.Id }) .WithTempQuery(a => a.Key) .First(a => new diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 9721afddf..7cc8aea60 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -764,5 +764,13 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 0f6c63294..dc17b3bf3 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1097,93 +1097,6 @@ - - - 动态创建实体类型 - - - - - 配置Class - - 类名 - 类标记的特性[Table(Name = "xxx")] [Index(xxxx)] - - - - - 获取类型构建器,可作为要构建的Type来引用 - - - - - 配置属性 - - 属性名称 - 属性类型 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性默认值 - 属性标记的特性-支持多个 - - - - - 配置父类 - - 父类类型 - - - - - Override属性 - - - - - - Emit动态创建出Class - Type - - - - - - Emit动态创建出Class - Type,不附带获取TableInfo - - - - - - 首字母小写 - - - - - - - 首字母大写 - - - - 获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 "" @@ -1563,7 +1476,7 @@ 从数据库连接串 - + 使用自定义数据库连接对象(放弃内置对象连接池技术) @@ -5984,28 +5897,6 @@ 对象池 - - - 动态构建Class Type - - - - - - 根据字典,创建 table 对应的实体对象 - - - - - - - - 根据实体对象,创建 table 对应的字典 - - - - - C#: that >= between && that <= and diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs index f2d2680b7..5af61e8ca 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0Provider.cs @@ -426,7 +426,7 @@ namespace FreeSql.Internal.CommonProvider return exp; } callExp = callExpStack.Pop(); - Expression newExp = callExp.Object.NodeType == ExpressionType.MemberAccess && typeof(ISelect0).IsAssignableFrom(callExp.Object.Type) ? + Expression newExp = callExp.Object != null && callExp.Object.NodeType == ExpressionType.MemberAccess && typeof(ISelect0).IsAssignableFrom(callExp.Object.Type) ? new ReplaceMemberExpressionVisitor().Replace(callExp, callExp.Object, Expression.Convert(Expression.Call( Expression.Convert(callExp.Object, typeof(Select0Provider)), typeof(Select0Provider).GetMethod(nameof(SetSameSelectPendingShareData), BindingFlags.NonPublic | BindingFlags.Instance),