From 4ba9ecc3fc3acc550f8fa59a233bf32d666123df Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 29 Sep 2023 16:02:47 +0800 Subject: [PATCH] Update Nav.Dynamic --- .../SqlSeverTest/UnitTest/UnitNavDynamic.cs | 19 +++++++++++++++++++ .../QueryableProvider/NavigatManager.cs | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitNavDynamic.cs b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitNavDynamic.cs index 10397ea4b8..a809ba11da 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitNavDynamic.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/UnitTest/UnitNavDynamic.cs @@ -11,6 +11,21 @@ public static void Init() { var db = NewUnitTest.Db; var list=db.Queryable().Includes(x => x.Persons).ToList(); + var list2 = db.Queryable() + .Includes(x => x.adds) + .Includes(x => x.adds2).ToList(); + if (list.First().Persons.Count() != 1) + { + throw new Exception("unit error"); + } + if (list2.First().adds==null) + { + throw new Exception("unit error"); + } + if (list2.Last().adds2 == null) + { + throw new Exception("unit error"); + } } [SqlSugar.SugarTable("UnitPerson0x1x1")] public class UnitPerson011 @@ -20,6 +35,10 @@ public class UnitPerson011 public string Name { get; set; } public int AddressId { get; set; } public int AddressId2 { get; set; } + [SqlSugar.Navigate(SqlSugar.NavigateType.Dynamic, "[{m:\"AddressId\",c:\"Id\"},{m:\"AddressId\",c:\"Id\"}]")] + public UnitAddress011 adds { get; set; } + [SqlSugar.Navigate(SqlSugar.NavigateType.Dynamic, "[{m:\"AddressId2\",c:\"Id\"},{m:\"AddressId2\",c:\"Id\"}]")] + public UnitAddress011 adds2 { get; set; } } [SqlSugar.SugarTable("UnitAddress0x1x1")] public class UnitAddress011 diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index 6bae3d1f14..946da5acfc 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -534,6 +534,10 @@ private void DynamicOneToOne(List list, Func, Li var navEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(navEntity); this.Context.InitMappingInfo(navEntity); var sqlObj = GetWhereSql(navObjectNameColumnInfo.Navigat.Name); + if (IsJsonMapping(navObjectNameColumnInfo, sqlObj)) + { + CreateDynamicMappingExpression(sqlObj, navObjectNameColumnInfo.Navigat.Name, navEntityInfo, listItemEntity); + } Check.ExceptionEasy(sqlObj.MappingExpressions.IsNullOrEmpty(), $"{expression} error,dynamic need MappingField ,Demo: Includes(it => it.Books.MappingField(z=>z.studenId,()=>it.StudentId).ToList())", $"{expression}解析出错, 自定义映射需要 MappingField ,例子: Includes(it => it.Books.MappingField(z=>z.studenId,()=>it.StudentId).ToList())"); if (list.Any() && navObjectNamePropety.GetValue(list.First()) == null) {