Add Queryable.Clone()

This commit is contained in:
sunkaixuan
2018-11-11 18:50:41 +08:00
parent fec394c3de
commit af0b1c201a
3 changed files with 91 additions and 10 deletions

View File

@@ -25,11 +25,11 @@ namespace OrmTest.Demo
private static void Clone()
{
//var db = GetInstance();
//var qy = db.Queryable<Student>().Where(it => 1 == 1);
var db = GetInstance();
var qy = db.Queryable<Student>().Where(it => 1 == 1);
//var list1 =qy.Clone<Student>().Where(it => it.Id == 1).ToList();
//var list2 = qy.Clone<Student>().Where(it => it.Id == 2).ToList();
var list1 = qy.Clone().Where(it => it.Id == 1).ToList();
var list2 = qy.Clone().Where(it => it.Id == 2).ToList();
}
private static void JoinExp()

View File

@@ -50,6 +50,12 @@ namespace SqlSugar
QueryBuilder.Clear();
}
public ISugarQueryable<T> Clone()
{
var queryable = this.Context.Queryable<T>().WithCacheIF(IsCache, CacheTime);
CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public virtual ISugarQueryable<T> AS<T2>(string tableName)
{
var entityName = typeof(T2).Name;
@@ -1264,18 +1270,16 @@ namespace SqlSugar
}
}
}
private ISugarQueryable<T> CopyQueryable()
protected ISugarQueryable<T> CopyQueryable()
{
var asyncContext = this.Context.Utilities.CopyContext(true);
asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true;
var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty).WithCacheIF(IsCache, CacheTime);
CopyQueryBuilder(asyncQueryable); return asyncQueryable;
CopyQueryBuilder(asyncQueryable.QueryBuilder); return asyncQueryable;
}
private void CopyQueryBuilder(ISugarQueryable<T> asyncQueryable)
protected void CopyQueryBuilder(QueryBuilder asyncQueryableBuilder)
{
var asyncQueryableBuilder = asyncQueryable.QueryBuilder;
asyncQueryableBuilder.Take = this.QueryBuilder.Take;
asyncQueryableBuilder.Skip = this.QueryBuilder.Skip;
asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue;
@@ -1466,6 +1470,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T,T2> Clone()
{
var queryable = this.Context.Queryable<T,T2>((t,t2)=>new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -1743,6 +1753,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2,T3> Clone()
{
var queryable = this.Context.Queryable<T, T2,T3>((t, t2,t3) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -2052,6 +2068,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2,T3,T4> Clone()
{
var queryable = this.Context.Queryable<T, T2,T3,T4>((t, t2,t3,t4) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -2364,6 +2386,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4,T5> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4,T5>((t, t2, t3, t4,t5) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -2666,6 +2694,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5,T6> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5,T6>((t, t2, t3, t4, t5,T6) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -2995,6 +3029,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6,T7> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6,T7>((t, t2, t3, t4, t5, T6,t7) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -3350,6 +3390,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7,T8> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7,T8>((t, t2, t3, t4, t5, T6, t7,t8) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -3729,6 +3775,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8,T9> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8,T9>((t, t2, t3, t4, t5, T6, t7, t8,t9) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -4132,6 +4184,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9,T10> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9,T10>((t, t2, t3, t4, t5, T6, t7, t8, t9,t10) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -4559,6 +4617,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10,T11> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10,T11>((t, t2, t3, t4, t5, T6, t7, t8, t9,t10,t11) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;
@@ -5012,6 +5076,12 @@ namespace SqlSugar
#endregion
#region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,T12> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,T12>((t, t2, t3, t4, t5, T6, t7, t8, t9, t10, t11,t12) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(this.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName)
{
var entityName = typeof(AsT).Name;

View File

@@ -14,7 +14,7 @@ namespace SqlSugar
SqlSugarClient Context { get; set; }
ISqlBuilder SqlBuilder { get; set; }
QueryBuilder QueryBuilder { get; set; }
ISugarQueryable<T> Clone();
ISugarQueryable<T> AS<T2>(string tableName);
ISugarQueryable<T> AS(string tableName);
ISugarQueryable<T> With(string withString);
@@ -179,6 +179,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2> Clone();
new ISugarQueryable<T, T2> AS<AsT>(string tableName);
new ISugarQueryable<T, T2> AS(string tableName);
new ISugarQueryable<T, T2> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -246,6 +247,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3> Clone();
new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3> AS(string tableName);
new ISugarQueryable<T, T2, T3> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -320,6 +322,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4> Clone();
new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -396,6 +399,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5> Clone();
new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -470,6 +474,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -549,6 +554,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -633,6 +639,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -724,6 +731,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -818,6 +826,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -917,6 +926,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Filter(string FilterName, bool isDisabledGobalFilter = false);
@@ -1021,6 +1031,7 @@ namespace SqlSugar
#endregion
#region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Filter(string FilterName, bool isDisabledGobalFilter = false);