From 4ac861e0d622393463a926209524506766262641 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 4 Dec 2023 11:23:46 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20=E5=A4=9A=E8=A1=A8?= =?UTF-8?q?=E5=AD=90=E6=9F=A5=E8=AF=A2=E5=8F=82=E6=95=B0=E5=8C=96=E5=85=B1?= =?UTF-8?q?=E4=BA=AB=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 6 +- FreeSql/FreeSql.xml | 98 ---------------------------- FreeSql/Internal/CommonExpression.cs | 8 ++- 3 files changed, 10 insertions(+), 102 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 93421a44..5dda7832 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -305,6 +305,7 @@ namespace base_entity public int id { get; set; } public int parentid { get; set; } public string code { get; set; } + public ActivityStatusCode status { get; set; } [Navigate(nameof(parentid))] public TreeModel Parent { get; set; } @@ -544,7 +545,7 @@ namespace base_entity #region 初始化 IFreeSql var fsql = new FreeSql.FreeSqlBuilder() - .UseAutoSyncStructure(false) + .UseAutoSyncStructure(true) .UseNoneCommandParameter(true) .UseNameConvert(NameConvertType.ToLower) //.UseMappingPriority(MappingPriorityType.Attribute, MappingPriorityType.FluentApi, MappingPriorityType.Aop) @@ -600,6 +601,9 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + //fsql.CodeFirst.IsGenerateCommandParameterWithLambda = true; + //var TreeModel01 = fsql.Select().Where(a => a.code == "x" && a.Childs.AsSelect().Any(b => b.id == a.id && b.status == ActivityStatusCode.Error)).ToList(); + var v1 = 123123123; var mysql0111 = fsql.Select().Where(a => a.Nickname.Contains(v1.ToString())).ToSql(); var mysql0112 = fsql.Select().Where(a => a.Nickname.Contains(123123123.ToString())).ToSql(); diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 563be88b..2b57cbb8 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1104,82 +1104,6 @@ - - - 动态创建实体类型 - - - - - 配置Class - - 类名 - 类标记的特性[Table(Name = "xxx")] [Index(xxxx)] - - - - - 配置属性 - - 属性名称 - 属性类型 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性标记的特性-支持多个 - - - - - 配置属性 - - 属性名称 - 属性类型 - 该属性是否重写父类属性 - 属性默认值 - 属性标记的特性-支持多个 - - - - - 配置父类 - - 父类类型 - - - - - Override属性 - - - - - - Emit动态创建出Class - Type - - - - - - 首字母小写 - - - - - - - 首字母大写 - - - - 获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 null @@ -5863,28 +5787,6 @@ 请使用 fsql.InsertDict(dict) 方法插入字典数据 - - - 动态构建Class Type - - - - - - 根据字典,创建 table 对应的实体对象 - - - - - - - - 根据实体对象,创建 table 对应的字典 - - - - - C#: that >= between && that <= and diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 7dcf590e..87656f48 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -978,7 +978,7 @@ namespace FreeSql.Internal _common._orm.Aop.ParseExpressionHandler(this, args); if (string.IsNullOrEmpty(args.Result) == false) return args.Result; } - ParseExpressionNoAsSelect(this, args, tsc._tableRule, tsc.whereGlobalFilter); + ParseExpressionNoAsSelect(this, args, tsc._tableRule, tsc.whereGlobalFilter, tsc.dbParams); if (string.IsNullOrEmpty(args.Result) == false) return args.Result; } switch (exp.NodeType) @@ -2611,7 +2611,7 @@ namespace FreeSql.Internal } } - public static void ParseExpressionNoAsSelect(object sender, Aop.ParseExpressionEventArgs e, Func tableRule, List whereGlobalFilter) + public static void ParseExpressionNoAsSelect(object sender, Aop.ParseExpressionEventArgs e, Func tableRule, List whereGlobalFilter, List dbParams) { if (e.Expression.NodeType != ExpressionType.Call && (e.Expression as MemberExpression)?.Member.Name != "Count") return; @@ -2689,6 +2689,7 @@ namespace FreeSql.Internal var mtmReftbname = e.FreeParse(Expression.MakeMemberAccess(memberExp.Expression, exp3Tb.Properties[exp3Tb.ColumnsByPosition[0].CsName])); mtmReftbname = mtmReftbname.Substring(0, mtmReftbname.Length - commonExp._common.QuoteSqlName(exp3Tb.ColumnsByPosition[0].Attribute.Name).Length - 1); var midSelect = commonExp._common._orm.Select().As($"M{select._tables[0].Alias}_M{mtmReftbname}").AsType(memberTbref.RefMiddleEntityType) as Select1Provider; + if (dbParams != null) midSelect.WithParameters(dbParams); if (tableRule != null) midSelect._tableRules.Add(tableRule); if (whereGlobalFilter != null) { @@ -2752,7 +2753,8 @@ namespace FreeSql.Internal Type = SelectTableInfoType.Parent, Parameter = a.Parameter })); - if (tableRule != null) select._tableRules.Add(tableRule); + if (dbParams != null) select.WithParameters(dbParams); + if (tableRule != null) select._tableRules.Add(tableRule); if (whereGlobalFilter != null) { select._whereGlobalFilter.Clear();