diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 9c6cd88b..743835e4 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -532,5 +532,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/462.cs b/FreeSql.Tests/FreeSql.Tests/Issues/462.cs new file mode 100644 index 00000000..0fa0162f --- /dev/null +++ b/FreeSql.Tests/FreeSql.Tests/Issues/462.cs @@ -0,0 +1,60 @@ +using FreeSql.DataAnnotations; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; +using System.Threading; +using Xunit; + +namespace FreeSql.Tests.Issues +{ + public class _462 + { + [Fact] + public void SelectTest() + { + IFreeSql db = new FreeSql.FreeSqlBuilder() + .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=1") + .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper) + .UseGenerateCommandParameterWithLambda(true) + .UseAutoSyncStructure(true) + .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText)) + .Build(); + + var startTime = DateTime.Now; + var endTime = DateTime.Now; + + var exp0 = 10; + var cou = db.Select() + .Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date) + .ToList(a => new + { + subCount = db.Select().Where(b => b.SCHEDULED_DTTM == exp0).Count() + }); + } + + [Table(Name = "V_HospitalReport22")] + public class V_HospitalReport + { + [Column(Name = "hospital_name")] + public string HospitalName { get; set; } + + [Column(Name = "dep")] + public string Dep { get; set; } + + [Column(Name = "instrna")] + public string Instrna { get; set; } + + [Column(Name = "confirm_doctor_name")] + public string ConfirmDoctorName { get; set; } + + [Column(Name = "Scheduled_Dttm")] + public DateTime ScheduledDttm { get; set; } + } + [Table(Name = "V_HOSPITALREPORT22111")] + public class V_HOSPITALREPORT + { + public int SCHEDULED_DTTM { get; set; } + } + } +} diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index d1177708..7d5c22c0 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -30,7 +30,7 @@ namespace FreeSql.Internal internal const int ReadAnonymousFieldAsCsName = -53129; public bool ReadAnonymousField(List _tables, StringBuilder field, ReadAnonymousTypeInfo parent, ref int index, Expression exp, Select0Provider select, SelectGroupingProvider grouping, List whereCascadeExpression, List findIncludeMany, bool isAllDtoMap) { - Func getTSC = () => new ExpTSC { _tables = _tables, grouping = grouping, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereCascadeExpression = whereCascadeExpression }; + Func getTSC = () => new ExpTSC { _tables = _tables, grouping = grouping, tbtype = SelectTableInfoType.From, isQuoteName = true, isDisableDiyParse = false, style = ExpressionStyle.Where, whereCascadeExpression = whereCascadeExpression, dbParams = select?._params }; //#462 添加 DbParams 解决 switch (exp.NodeType) { case ExpressionType.Quote: return ReadAnonymousField(_tables, field, parent, ref index, (exp as UnaryExpression)?.Operand, select, grouping, whereCascadeExpression, findIncludeMany, isAllDtoMap);