From d3d5a1fdd4e02f3492ee5d9a6f766e0dec2d6c27 Mon Sep 17 00:00:00 2001 From: SUNKAIXUAN <610262374@qq.com> Date: Thu, 4 Mar 2021 19:36:16 +0800 Subject: [PATCH] Update mapper --- Src/Asp.Net/SqlServerTest/Models/Mapper.cs | 2 ++ .../SqlServerTest/UnitTest/UQueryable2.cs | 9 +++++++++ .../QueryableProvider/QueryableProvider.cs | 14 ++++++++++--- .../SqlSugar/Entities/ManyToManyConfig.cs | 20 +++++++++++++++++++ Src/Asp.Net/SqlSugar/Interface/IQueryable.cs | 1 + Src/Asp.Net/SqlSugar/SqlSugar.csproj | 1 + 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 Src/Asp.Net/SqlSugar/Entities/ManyToManyConfig.cs diff --git a/Src/Asp.Net/SqlServerTest/Models/Mapper.cs b/Src/Asp.Net/SqlServerTest/Models/Mapper.cs index 8d7991d6c..bbf4e9af4 100644 --- a/Src/Asp.Net/SqlServerTest/Models/Mapper.cs +++ b/Src/Asp.Net/SqlServerTest/Models/Mapper.cs @@ -44,6 +44,8 @@ namespace OrmTest [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } public string Name { get; set; } + [SugarColumn(IsIgnore = true)] + public List BList { get; set; } } public class B { diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs index 1afaca31d..87b923f48 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable2.cs @@ -93,6 +93,15 @@ namespace OrmTest var qu4 = Db.Queryable().OrderBy(it=>it.Id+it.Id).ToList(); + + var list11 = Db.Queryable() + + .ToList(); + + //var list8 = Db.Queryable() + //.Mapper(it=>ManyToMany.Config(it.A,it.AId,it.B,it.BId)) + //.ToList(); + } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 00b72461d..e6b9742b2 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -22,7 +22,7 @@ namespace SqlSugar public ISqlBuilder SqlBuilder { get; set; } public MappingTableList OldMappingTableList { get; set; } public MappingTableList QueryableMappingTableList { get; set; } - public Action MapperAction { get; set; } + public List> MapperAction { get; set; } public Action> MapperActionWithCache { get; set; } public List>> Mappers { get; set; } public bool IsCache { get; set; } @@ -105,7 +105,12 @@ namespace SqlSugar public virtual ISugarQueryable Mapper(Action mapperAction) { - this.MapperAction = mapperAction; + this.MapperAction=UtilMethods.IsNullReturnNew(this.MapperAction); + this.MapperAction.Add(mapperAction); + return this; + } + public ISugarQueryable Mapper(Expression> expression) + { return this; } public virtual ISugarQueryable Mapper(Action> mapperAction) @@ -1608,7 +1613,10 @@ namespace SqlSugar { if (typeof(TResult) == typeof(T)) { - this.MapperAction((T)(item as object)); + foreach (var mapper in this.MapperAction) + { + mapper((T)(item as object)); + } } else { diff --git a/Src/Asp.Net/SqlSugar/Entities/ManyToManyConfig.cs b/Src/Asp.Net/SqlSugar/Entities/ManyToManyConfig.cs new file mode 100644 index 000000000..eea085089 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Entities/ManyToManyConfig.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class ManyToMany + { + public static ManyToMany Config(AClass aClass,AField aField,BClass bClass,BField bField) + where AClass:class + where AField : struct + where BClass:class + where BField:struct + { + return null; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index b701d29a9..06c059f15 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -20,6 +20,7 @@ namespace SqlSugar ISugarQueryable With(string withString); ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); ISugarQueryable Mapper(Action mapperAction); + ISugarQueryable Mapper(Expression> expression); ISugarQueryable Mapper(Action> mapperAction); ISugarQueryable Mapper(Expression> mapperObject, Expression> mainField, Expression> childField); ISugarQueryable Mapper(Expression>> mapperObject, Expression> mainField, Expression> childField); diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index e81e454ef..e5287d711 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -89,6 +89,7 @@ +