From d9f04041b8bcf5ccf04e4d13442ba5f55716d340 Mon Sep 17 00:00:00 2001
From: sunkaixuan <610262374@qq.com>
Date: Wed, 11 Oct 2017 11:10:51 +0800
Subject: [PATCH] Update Cache Demos
---
Src/Asp.Net/ExtensionsDemo/App.config | 6 ++
Src/Asp.Net/ExtensionsDemo/CacheDemo.cs | 52 +++++++++++++
Src/Asp.Net/ExtensionsDemo/Config.cs | 13 ++++
.../ExtensionsDemo/ExtensionsDemo.csproj | 73 +++++++++++++++++++
Src/Asp.Net/ExtensionsDemo/Models/Student.cs | 23 ++++++
Src/Asp.Net/ExtensionsDemo/Program.cs | 16 ++++
.../ExtensionsDemo/Properties/AssemblyInfo.cs | 36 +++++++++
Src/Asp.Net/SqlSugar.sln | 18 +++++
.../SqlSugar/CacheScheme/CacheKeyBuider.cs | 38 +++++++++-
.../SqlSugar/CacheScheme/CacheSchemeMain.cs | 2 +-
Src/Asp.Net/SqlSugar/Entities/CacheKey.cs | 2 +-
11 files changed, 273 insertions(+), 6 deletions(-)
create mode 100644 Src/Asp.Net/ExtensionsDemo/App.config
create mode 100644 Src/Asp.Net/ExtensionsDemo/CacheDemo.cs
create mode 100644 Src/Asp.Net/ExtensionsDemo/Config.cs
create mode 100644 Src/Asp.Net/ExtensionsDemo/ExtensionsDemo.csproj
create mode 100644 Src/Asp.Net/ExtensionsDemo/Models/Student.cs
create mode 100644 Src/Asp.Net/ExtensionsDemo/Program.cs
create mode 100644 Src/Asp.Net/ExtensionsDemo/Properties/AssemblyInfo.cs
diff --git a/Src/Asp.Net/ExtensionsDemo/App.config b/Src/Asp.Net/ExtensionsDemo/App.config
new file mode 100644
index 000000000..88fa4027b
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs b/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs
new file mode 100644
index 000000000..ddc5b901d
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/CacheDemo.cs
@@ -0,0 +1,52 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ExtensionsDemo
+{
+ public class CacheDemo
+ {
+ public static void Init()
+ {
+ var myCache = new SqlSugar.Extensions.HttpRuntimeCache();
+ SqlSugarClient db = new SqlSugarClient(
+ new ConnectionConfig()
+ {
+ ConnectionString = Config.ConnectionString,
+ DbType = DbType.SqlServer,
+ IsAutoCloseConnection = true,
+ ConfigureExternalServices = new ConfigureExternalServices()
+ {
+ DataInfoCacheService = myCache
+ }
+ });
+
+ for (int i = 0; i < 10000; i++)
+ {
+ 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("Cache Key Count:"+myCache.GetAllKey().Count());
+ foreach (var item in myCache.GetAllKey())
+ {
+ Console.WriteLine();
+ Console.WriteLine(item);
+ Console.WriteLine();
+ }
+
+ db.Deleteable().Where(it => it.Id == 1).RemoveDataCache().ExecuteCommand();
+
+ Console.WriteLine("Cache Key Count:" + myCache.GetAllKey().Count());
+ }
+
+ }
+}
diff --git a/Src/Asp.Net/ExtensionsDemo/Config.cs b/Src/Asp.Net/ExtensionsDemo/Config.cs
new file mode 100644
index 000000000..f61a858f5
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/Config.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ExtensionsDemo
+{
+ public class Config
+ {
+ public static string ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest";
+ }
+}
diff --git a/Src/Asp.Net/ExtensionsDemo/ExtensionsDemo.csproj b/Src/Asp.Net/ExtensionsDemo/ExtensionsDemo.csproj
new file mode 100644
index 000000000..2465ef3bb
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/ExtensionsDemo.csproj
@@ -0,0 +1,73 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F}
+ Exe
+ Properties
+ ExtensionsDemo
+ ExtensionsDemo
+ v4.5.2
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {cdb72abe-0336-4730-a195-abf2611deeaa}
+ SqlSugar.Extensions.Cache
+
+
+ {489bb790-226c-4fad-8d1e-51d72a7ff8e5}
+ SqlSugar
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Asp.Net/ExtensionsDemo/Models/Student.cs b/Src/Asp.Net/ExtensionsDemo/Models/Student.cs
new file mode 100644
index 000000000..00119e911
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/Models/Student.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using System.Linq.Expressions;
+
+namespace ExtensionsDemo
+{
+ [SugarTable("STudent")]
+ public class Student
+ {
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "ID")]
+ public int Id { get; set; }
+ public int? SchoolId { get; set; }
+ public string Name { get; set; }
+ public DateTime? CreateTime { get; set; }
+ [SugarColumn(IsIgnore=true)]
+ public int TestId { get; set; }
+ }
+
+}
diff --git a/Src/Asp.Net/ExtensionsDemo/Program.cs b/Src/Asp.Net/ExtensionsDemo/Program.cs
new file mode 100644
index 000000000..cf6187e8d
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/Program.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ExtensionsDemo
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ CacheDemo.Init();
+ }
+ }
+}
diff --git a/Src/Asp.Net/ExtensionsDemo/Properties/AssemblyInfo.cs b/Src/Asp.Net/ExtensionsDemo/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..9f6849829
--- /dev/null
+++ b/Src/Asp.Net/ExtensionsDemo/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("ExtensionsDemo")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ExtensionsDemo")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//将 ComVisible 设置为 false 将使此程序集中的类型
+//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("ebba686a-c1f0-4823-85eb-32eb306add7f")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Src/Asp.Net/SqlSugar.sln b/Src/Asp.Net/SqlSugar.sln
index 05b69427a..f4c677ea1 100644
--- a/Src/Asp.Net/SqlSugar.sln
+++ b/Src/Asp.Net/SqlSugar.sln
@@ -15,6 +15,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OracleTest", "OracleTest\Or
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceTest", "PerformanceTest\PerformanceTest.csproj", "{60D6AA62-93ED-4D02-80E4-6BEB81766D3E}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SqlSugar.Extensions", "SqlSugar.Extensions", "{B762D1DA-DFCD-4597-A14D-4F20DA0EE70E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SqlSugar.Extensions.Cache", "SqlSugar.Extensions.Cache\SqlSugar.Extensions.Cache.csproj", "{CDB72ABE-0336-4730-A195-ABF2611DEEAA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtensionsDemo", "ExtensionsDemo\ExtensionsDemo.csproj", "{EBBA686A-C1F0-4823-85EB-32EB306ADD7F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -45,8 +51,20 @@ Global
{60D6AA62-93ED-4D02-80E4-6BEB81766D3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60D6AA62-93ED-4D02-80E4-6BEB81766D3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60D6AA62-93ED-4D02-80E4-6BEB81766D3E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CDB72ABE-0336-4730-A195-ABF2611DEEAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CDB72ABE-0336-4730-A195-ABF2611DEEAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CDB72ABE-0336-4730-A195-ABF2611DEEAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CDB72ABE-0336-4730-A195-ABF2611DEEAA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {CDB72ABE-0336-4730-A195-ABF2611DEEAA} = {B762D1DA-DFCD-4597-A14D-4F20DA0EE70E}
+ {EBBA686A-C1F0-4823-85EB-32EB306ADD7F} = {B762D1DA-DFCD-4597-A14D-4F20DA0EE70E}
+ EndGlobalSection
EndGlobal
diff --git a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs
index 9ed5e3aa3..80508c5b6 100644
--- a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs
+++ b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs
@@ -11,9 +11,13 @@ namespace SqlSugar
{
CacheKey result = new CacheKey();
result.Database = context.Context.Ado.Connection.Database;
- result.Tables = new List();
- result.Tables.Add(context.EntityMaintenance.GetTableName(queryBuilder.EntityName));
- result.Tables.AddRange(queryBuilder.JoinQueryInfos.Select(it=>it.TableName));
+ AddTables(context, queryBuilder, result);
+ AddIdentificationList(queryBuilder, result);
+ return result;
+ }
+
+ private static void AddIdentificationList(QueryBuilder queryBuilder, CacheKey result)
+ {
result.IdentificationList = new List();
result.IdentificationList.Add(queryBuilder.GetTableNameString);
result.IdentificationList.Add(queryBuilder.GetJoinValueString);
@@ -23,7 +27,33 @@ namespace SqlSugar
result.IdentificationList.Add(queryBuilder.PartitionByValue);
result.IdentificationList.Add(queryBuilder.Take.ObjToString());
result.IdentificationList.Add(queryBuilder.Skip.ObjToString());
- return result;
+ if (queryBuilder.Parameters.HasValue())
+ {
+ foreach (var item in queryBuilder.Parameters)
+ {
+ result.IdentificationList.Add(item.ParameterName + "_" + item.Value);
+ }
+ }
+ }
+
+ private static void AddTables(SqlSugarClient context, QueryBuilder queryBuilder, CacheKey result)
+ {
+ result.Tables = new List();
+ result.Tables.Add(context.EntityMaintenance.GetTableName(queryBuilder.EntityName));
+ if (queryBuilder.EasyJoinInfos.HasValue())
+ {
+ foreach (var item in queryBuilder.EasyJoinInfos)
+ {
+ result.Tables.Add(context.EntityMaintenance.GetTableName(item.Value));
+ }
+ }
+ if (queryBuilder.JoinQueryInfos.HasValue())
+ {
+ foreach (var item in queryBuilder.JoinQueryInfos)
+ {
+ result.Tables.Add(queryBuilder.Builder.GetNoTranslationColumnName(item.TableName));
+ }
+ }
}
}
}
diff --git a/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs b/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs
index 6001db3cc..449dfd5b3 100644
--- a/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs
+++ b/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs
@@ -22,7 +22,7 @@ namespace SqlSugar
{
foreach (var item in keys)
{
- if (keys.Contains(UtilConstants.Dot + tableName + UtilConstants.Dot))
+ if (item.ToLower().Contains(UtilConstants.Dot + tableName.ToLower() + UtilConstants.Dot))
{
cacheService.Remove(item);
}
diff --git a/Src/Asp.Net/SqlSugar/Entities/CacheKey.cs b/Src/Asp.Net/SqlSugar/Entities/CacheKey.cs
index c9d942414..40cd87ade 100644
--- a/Src/Asp.Net/SqlSugar/Entities/CacheKey.cs
+++ b/Src/Asp.Net/SqlSugar/Entities/CacheKey.cs
@@ -12,7 +12,7 @@ namespace SqlSugar
public List IdentificationList { get; set; }
public new string ToString()
{
- return "SqlSugarDataCache." + UtilConstants.Dot + string.Join(UtilConstants.Dot, this.Tables) + string.Join(UtilConstants.Dot, this.IdentificationList);
+ return "SqlSugarDataCache" + UtilConstants.Dot + string.Join(UtilConstants.Dot, this.Tables) +UtilConstants.Dot+ string.Join(UtilConstants.Dot, this.IdentificationList.Where(it=>it.HasValue()));
}
}
}