DynamicProperyBuilder.WithCache

This commit is contained in:
sunkaixuan
2023-03-21 13:06:25 +08:00
parent 2edbadb7bd
commit 19f940b784
2 changed files with 24 additions and 4 deletions

View File

@@ -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;
}
}
}
}

View File

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