From c43a90787c99f6091d5b1d46ef46cdf97058296a Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Wed, 17 Aug 2022 15:15:17 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20ToSql=20AsProperty=20?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E5=88=AB=E5=90=8D=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 | 11 +++++++++++ FreeSql.DbContext/FreeSql.DbContext.xml | 9 --------- FreeSql/Internal/CommonExpression.cs | 14 ++++++++++++-- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index ce98c12d..e1310850 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -379,6 +379,17 @@ namespace base_entity #endregion + Expression, bool>> where = null; + where = where.Or(a => a.t6.Index > 0); + where = where.Or(a => a.t5.Index > 0); + where = where.Or(a => a.t4.Index > 0); + where = where.Or(a => a.t3.Index > 0); + where = where.Or(a => a.t2.Index > 0); + where = where.Or(a => a.t1.Nickname.Length > 0); + + var sql11224333 = fsql.Select().Where(where).ToSql(); + + fsql.UseJsonMap(); fsql.CodeFirst.ConfigEntity(cf => diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 26522f10..537315e2 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -800,14 +800,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index e2b06c63..5747daa3 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -51,6 +51,16 @@ namespace FreeSql.Internal public bool ReadAnonymousField(List _tables, Func _tableRule, StringBuilder field, ReadAnonymousTypeInfo parent, ref int index, Expression exp, Select0Provider select, BaseDiyMemberExpression diymemexp, List whereGlobalFilter, List findIncludeMany, List findSubSelectMany, bool isAllDtoMap) { + bool LocalEndsWithField(string dbField, string dbNestedField) + { + switch (_ado.DataType) + { + case DataType.SqlServer: + case DataType.OdbcSqlServer: + return dbField.EndsWith(dbNestedField, StringComparison.CurrentCultureIgnoreCase); + } + return dbField.EndsWith(dbNestedField); + } void LocalSetFieldAlias(ref int localIndex, bool isdiymemexp) { if (localIndex >= 0) @@ -63,7 +73,7 @@ namespace FreeSql.Internal else if (string.IsNullOrEmpty(parent.CsName) == false) { parent.DbNestedField = GetFieldAsCsName(parent.CsName); - if (localIndex == ReadAnonymousFieldAsCsName && parent.DbField.EndsWith(parent.DbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理 + if (localIndex == ReadAnonymousFieldAsCsName && LocalEndsWithField(parent.DbField, parent.DbNestedField) == false) //DbField 和 CsName 相同的时候,不处理 field.Append(_common.FieldAsAlias(parent.DbNestedField)); } } @@ -253,7 +263,7 @@ namespace FreeSql.Internal else if (string.IsNullOrEmpty(parent.CsName) == false) { dbNestedField = GetFieldAsCsName(parent.CsName); - if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(dbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理 + if (index == ReadAnonymousFieldAsCsName && LocalEndsWithField(diymemexp._field, dbNestedField) == false) //DbField 和 CsName 相同的时候,不处理 field.Append(_common.FieldAsAlias(dbNestedField)); } }