From ce877b3411dbe73a230ef96860391ff41245b672 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Tue, 18 Jan 2022 11:42:19 +0800 Subject: [PATCH] Update exp to sql --- .../SqlServerTest/SqlServerTest.csproj | 1 + Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + .../SqlServerTest/UnitTest/UCustom06.cs | 46 +++++++++++++++++++ .../ResolveItems/BaseResolve.cs | 9 +++- .../SqlSugar/Infrastructure/ContextMethods.cs | 5 ++ 5 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UCustom06.cs diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index 7e9f8d094..de2ab9a7b 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -102,6 +102,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index 490885a0d..495e075d9 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -36,6 +36,7 @@ namespace OrmTest UCustom03.Init(); UCustom04.Init(); UCustom05.Init(); + UCustom06.Init(); SubQueryTest(); UConfig(); DeleteTest(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UCustom06.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom06.cs new file mode 100644 index 000000000..c8dea0ba2 --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom06.cs @@ -0,0 +1,46 @@ +using OrmTest.UnitTest.Models; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class UCustom06 + { + public static void Init() + { + var db = NewUnitTest.Db; + + db.CodeFirst.InitTables(); + db.Insertable(new Unit06() { Company = "1", Name = "2", Work = "3" }).ExecuteCommand(); + var list = db.Queryable().Select(a => new UnitPeople + { + Name = a.Name, + Job = new UnitJobClass { Company = a.Company, Work = a.Work } + } + ).ToList(); + + + } + public class Unit06 + { + public string Name { get; set; } + public string Company { get; set; } + public string Work { get; set; } + } + public class UnitPeople + { + public string Name { get; set; } + public UnitJobClass Job { get; set; } + } + + public class UnitJobClass + { + public string Company { get; set; } + public string Work { get; set; } + } + } +} diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index 3dbad127d..56b99e9ab 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -621,7 +621,14 @@ namespace SqlSugar { dbColumnName = mappingInfo.DbColumnName; } - asName = this.Context.GetTranslationText(shortName+"."+item.Type.Name + "." + propertyName); + if (shortName != null && shortName.ObjToString().Contains(this.Context.SqlTranslationLeft)) + { + asName = this.Context.GetTranslationText(item.Type.Name + "." + propertyName); + } + else + { + asName = this.Context.GetTranslationText(shortName + "." + item.Type.Name + "." + propertyName); + } if (Context.IsJoin) { this.Context.Result.Append(Context.GetAsString(asName, dbColumnName, shortName.ObjToString())); diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs index 13ee8c679..17bbbe621 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs @@ -436,11 +436,16 @@ namespace SqlSugar { var key = typeName + "." + name; var info = readerValues.Select(it => it.Key).FirstOrDefault(it => it.ToLower() == key.ToLower()); + var oldInfo = info; if (mappingKeys!=null&&mappingKeys.ContainsKey(item.Name)) { key = mappingKeys[item.Name]+"."+typeName + "." + name; info = readerValues.Select(it => it.Key).FirstOrDefault(it => it.ToLower() == key.ToLower()); } + if (info == null&&oldInfo!=null) + { + info = oldInfo; + } if (info != null) { var addItem = readerValues[info];