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();