From 23adbefe94bf232a1e513dfba8c598f0e332a5b2 Mon Sep 17 00:00:00 2001 From: SUNKAIXUAN <610262374@qq.com> Date: Sat, 27 Mar 2021 13:59:02 +0800 Subject: [PATCH] Update data cache --- Src/Asp.Net/ExtensionsDemo/CacheDemo.cs | 20 ++++++++----------- Src/Asp.Net/ExtensionsDemo/Config.cs | 2 +- .../QueryableProvider/QueryableProvider.cs | 9 +++++++-- .../SqlSugar/CacheScheme/CacheKeyBuider.cs | 13 ++++++++++++ Src/Asp.Net/SqlSugar/Interface/IQueryable.cs | 2 ++ 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs b/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs index 4ca070ba3..ed2c92a53 100644 --- a/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs +++ b/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs @@ -33,21 +33,16 @@ namespace ExtensionsDemo } }); - - for (int i = 0; i < 10000; i++) + db.Aop.OnLogExecuted = (s, p) => { - db.Queryable().Where(it => it.Id > 0).WithCache().ToList(); - } - - - db.Queryable((s1, s2) => s1.Id == s2.Id).Select(s1 => s1).WithCache().ToList(); - - - db.Queryable((s1, s2) => new object[] { - JoinType.Left,s1.Id==s2.Id - }).Select(s1 => s1).WithCache().ToList(); + Console.WriteLine(s); + }; + db.CodeFirst.InitTables(); + db.Insertable(new Student() { CreateTime = DateTime.Now, Name= "a",SchoolId=0 }).ExecuteCommand(); + var x=db.Queryable().WithCache().ToDictionaryList(); + // db.Queryable().Select("1 as idx").WithCache().ToList(); Console.WriteLine("Cache Key Count:" + myCache.GetAllKey().Count()); foreach (var item in myCache.GetAllKey()) @@ -56,6 +51,7 @@ namespace ExtensionsDemo Console.WriteLine(item); Console.WriteLine(); } + db.Deleteable().Where(it => it.Id == 1).RemoveDataCache().ExecuteCommand(); diff --git a/Src/Asp.Net/ExtensionsDemo/Config.cs b/Src/Asp.Net/ExtensionsDemo/Config.cs index 760e45df0..f61a858f5 100644 --- a/Src/Asp.Net/ExtensionsDemo/Config.cs +++ b/Src/Asp.Net/ExtensionsDemo/Config.cs @@ -8,6 +8,6 @@ namespace ExtensionsDemo { public class Config { - public static string ConnectionString = "server=.;uid=sa;pwd=haosql;database=SqlSugar4XTest"; + public static string ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest"; } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 12e19f118..f87dda264 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -751,6 +751,9 @@ namespace SqlSugar var result = InstanceFactory.GetQueryable(this.Context.CurrentConnectionConfig); result.Context = this.Context; result.SqlBuilder = this.SqlBuilder; + result.QueryBuilder.ResultType = this.QueryBuilder.ResultType; + result.IsCache = this.IsCache; + result.CacheTime = this.CacheTime; QueryBuilder.SelectValue = selectValue; if (this.IsAs) { @@ -954,7 +957,7 @@ namespace SqlSugar public virtual DataTable ToDataTable() { - QueryBuilder.ResultType = typeof(DataTable); + QueryBuilder.ResultType = typeof(SugarCacheDataTable); InitMapping(); var sqlObj = this.ToSql(); RestoreMapping(); @@ -1003,6 +1006,7 @@ namespace SqlSugar public Dictionary ToDictionary(Expression> key, Expression> value) { + this.QueryBuilder.ResultType = typeof(SugarCacheDictionary); var keyName = QueryBuilder.GetExpressionValue(key, ResolveExpressType.FieldSingle).GetResultString(); var valueName = QueryBuilder.GetExpressionValue(value, ResolveExpressType.FieldSingle).GetResultString(); var result = this.Select>(keyName + "," + valueName).ToList().ToDictionary(it => it.Key.ObjToString(), it => it.Value); @@ -1010,6 +1014,7 @@ namespace SqlSugar } public async Task> ToDictionaryAsync(Expression> key, Expression> value) { + this.QueryBuilder.ResultType = typeof(SugarCacheDictionary); var keyName = QueryBuilder.GetExpressionValue(key, ResolveExpressType.FieldSingle).GetResultString(); var valueName = QueryBuilder.GetExpressionValue(value, ResolveExpressType.FieldSingle).GetResultString(); var list = await this.Select>(keyName + "," + valueName).ToListAsync(); @@ -1325,7 +1330,7 @@ namespace SqlSugar } public async Task ToDataTableAsync() { - QueryBuilder.ResultType = typeof(DataTable); + QueryBuilder.ResultType = typeof(SugarCacheDataTable); InitMapping(); var sqlObj = this.ToSql(); RestoreMapping(); diff --git a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs index 8eac7f894..5cba87306 100644 --- a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs +++ b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs @@ -63,4 +63,17 @@ namespace SqlSugar } } } + + internal class SugarCacheDictionary + { + + } + internal class SugarCacheDictionaryList + { + + } + internal class SugarCacheDataTable + { + + } } diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 1cfce868c..597655774 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -14,6 +14,8 @@ namespace SqlSugar SqlSugarProvider Context { get; set; } ISqlBuilder SqlBuilder { get; set; } QueryBuilder QueryBuilder { get; set; } + bool IsCache { get; set; } + int CacheTime { get; set; } ISugarQueryable Clone(); ISugarQueryable AS(string tableName); ISugarQueryable AS(string tableName);