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];