From 19f940b784d124886d85fdf9fccfdc0b54cd7ab9 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 21 Mar 2023 13:06:25 +0800 Subject: [PATCH] DynamicProperyBuilder.WithCache --- .../DynamicBuilder/DynamicProperyBuilder.cs | 24 +++++++++++++++++-- .../SqlSugar/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/DynamicProperyBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/DynamicProperyBuilder.cs index f9c3831eb..18cba77c5 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/DynamicProperyBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/DynamicProperyBuilder.cs @@ -12,6 +12,7 @@ namespace SqlSugar public class DynamicProperyBuilder { + private bool IsCache = false; public static DynamicProperyBuilder CopyNew() { return new DynamicProperyBuilder(); @@ -26,10 +27,29 @@ namespace SqlSugar baseBuilder.propertyAttr.Add(addItem); return this; } - + public DynamicProperyBuilder WithCache(bool isCache=true) + { + IsCache = isCache; + return this; + } public Type BuilderType() { - return DynamicBuilderHelper.CreateDynamicClass(baseBuilder.entityName, baseBuilder.propertyAttr, TypeAttributes.Public, baseBuilder.entityAttr, baseBuilder.baseType, baseBuilder.interfaces); + if (IsCache) + { + var key = baseBuilder.entityName + string.Join("_", baseBuilder.propertyAttr.Select(it => it.Name + it.Type.Name)); + return new ReflectionInoCacheService().GetOrCreate(key,() => + { + var result = DynamicBuilderHelper.CreateDynamicClass(baseBuilder.entityName, baseBuilder.propertyAttr, TypeAttributes.Public, baseBuilder.entityAttr, baseBuilder.baseType, baseBuilder.interfaces); + return result; + }); + } + else + { + var result = DynamicBuilderHelper.CreateDynamicClass(baseBuilder.entityName, baseBuilder.propertyAttr, TypeAttributes.Public, baseBuilder.entityAttr, baseBuilder.baseType, baseBuilder.interfaces); + return result; + } } + + } } diff --git a/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs b/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs index 9b6983502..cf564ed70 100644 --- a/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs +++ b/Src/Asp.Net/SqlSugar/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("5.1.4.59")] -[assembly: AssemblyFileVersion("5.1.4.59")] +[assembly: AssemblyVersion("5.1.4.60")] +[assembly: AssemblyFileVersion("5.1.4.60")]