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")]