mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 12:33:44 +08:00
Synchronization code
This commit is contained in:
@@ -1451,6 +1451,63 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Subquery
|
#region Subquery
|
||||||
|
private bool IsSubToList()
|
||||||
|
{
|
||||||
|
return this.QueryBuilder.SubToListParameters != null && this.QueryBuilder.SubToListParameters.Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual ISugarQueryable<T> MergeTableWithSubToListJoin()
|
||||||
|
{
|
||||||
|
//_ToSql();
|
||||||
|
var clone = this.Clone();
|
||||||
|
|
||||||
|
clone.QueryBuilder.AppendValues = null;
|
||||||
|
clone.QueryBuilder.SubToListParameters = null;
|
||||||
|
clone.QueryBuilder.AppendColumns = null;
|
||||||
|
Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null, ErrorMessage.GetThrowMessage("'Mapper’ needs to be written after ‘MergeTable’ ", "Mapper 只能在 MergeTable 之后使用"));
|
||||||
|
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
||||||
|
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
||||||
|
var sqlobj = clone.ToSql();
|
||||||
|
var index = QueryBuilder.WhereIndex + 1;
|
||||||
|
var result = this.Context.Queryable<T>().AS(SqlBuilder.GetPackTable(sqlobj.Key, "MergeTable")).AddParameters(sqlobj.Value).Select("*").With(SqlWith.Null);
|
||||||
|
result.QueryBuilder.WhereIndex = index;
|
||||||
|
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++;
|
||||||
|
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++;
|
||||||
|
if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle)
|
||||||
|
{
|
||||||
|
result.Select("MergeTable.*");
|
||||||
|
}
|
||||||
|
result.QueryBuilder.AppendValues = this.QueryBuilder.AppendValues;
|
||||||
|
result.QueryBuilder.SubToListParameters = this.QueryBuilder.SubToListParameters;
|
||||||
|
result.QueryBuilder.AppendColumns = this.QueryBuilder.AppendColumns;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public virtual ISugarQueryable<T> MergeTableWithSubToList()
|
||||||
|
{
|
||||||
|
_ToSql();
|
||||||
|
var clone = this.Clone();
|
||||||
|
|
||||||
|
clone.QueryBuilder.AppendValues = null;
|
||||||
|
clone.QueryBuilder.SubToListParameters = null;
|
||||||
|
clone.QueryBuilder.AppendColumns = null;
|
||||||
|
Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null, ErrorMessage.GetThrowMessage("'Mapper’ needs to be written after ‘MergeTable’ ", "Mapper 只能在 MergeTable 之后使用"));
|
||||||
|
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
||||||
|
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
||||||
|
var sqlobj = clone.ToSql();
|
||||||
|
var index = QueryBuilder.WhereIndex + 1;
|
||||||
|
var result = this.Context.Queryable<T>().AS(SqlBuilder.GetPackTable(sqlobj.Key, "MergeTable")).AddParameters(sqlobj.Value).Select("*").With(SqlWith.Null);
|
||||||
|
result.QueryBuilder.WhereIndex = index;
|
||||||
|
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++;
|
||||||
|
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++;
|
||||||
|
if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle)
|
||||||
|
{
|
||||||
|
result.Select("MergeTable.*");
|
||||||
|
}
|
||||||
|
result.QueryBuilder.AppendValues = this.QueryBuilder.AppendValues;
|
||||||
|
result.QueryBuilder.SubToListParameters = this.QueryBuilder.SubToListParameters;
|
||||||
|
result.QueryBuilder.AppendColumns = this.QueryBuilder.AppendColumns;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private void _SubQuery<TResult>(List<TResult> result)
|
private void _SubQuery<TResult>(List<TResult> result)
|
||||||
{
|
{
|
||||||
|
@@ -1100,7 +1100,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public virtual ISugarQueryable<T> MergeTable()
|
public virtual ISugarQueryable<T> MergeTable()
|
||||||
{
|
{
|
||||||
if (this.QueryBuilder.SubToListParameters != null && this.QueryBuilder.SubToListParameters.Count > 0)
|
if (IsSubToList())
|
||||||
{
|
{
|
||||||
return MergeTableWithSubToList();
|
return MergeTableWithSubToList();
|
||||||
}
|
}
|
||||||
@@ -1108,7 +1108,7 @@ namespace SqlSugar
|
|||||||
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
||||||
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
||||||
var sqlobj = this._ToSql();
|
var sqlobj = this._ToSql();
|
||||||
if(this.QueryBuilder.SubToListParameters != null && this.QueryBuilder.SubToListParameters.Count > 0)
|
if (IsSubToList())
|
||||||
{
|
{
|
||||||
return MergeTableWithSubToListJoin();
|
return MergeTableWithSubToListJoin();
|
||||||
}
|
}
|
||||||
@@ -1123,58 +1123,6 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
public virtual ISugarQueryable<T> MergeTableWithSubToListJoin()
|
|
||||||
{
|
|
||||||
//_ToSql();
|
|
||||||
var clone = this.Clone();
|
|
||||||
|
|
||||||
clone.QueryBuilder.AppendValues = null;
|
|
||||||
clone.QueryBuilder.SubToListParameters = null;
|
|
||||||
clone.QueryBuilder.AppendColumns = null;
|
|
||||||
Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null, ErrorMessage.GetThrowMessage("'Mapper’ needs to be written after ‘MergeTable’ ", "Mapper 只能在 MergeTable 之后使用"));
|
|
||||||
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
|
||||||
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
|
||||||
var sqlobj = clone.ToSql();
|
|
||||||
var index = QueryBuilder.WhereIndex + 1;
|
|
||||||
var result = this.Context.Queryable<T>().AS(SqlBuilder.GetPackTable(sqlobj.Key, "MergeTable")).AddParameters(sqlobj.Value).Select("*").With(SqlWith.Null);
|
|
||||||
result.QueryBuilder.WhereIndex = index;
|
|
||||||
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++;
|
|
||||||
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++;
|
|
||||||
if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle)
|
|
||||||
{
|
|
||||||
result.Select("MergeTable.*");
|
|
||||||
}
|
|
||||||
result.QueryBuilder.AppendValues = this.QueryBuilder.AppendValues;
|
|
||||||
result.QueryBuilder.SubToListParameters = this.QueryBuilder.SubToListParameters;
|
|
||||||
result.QueryBuilder.AppendColumns = this.QueryBuilder.AppendColumns;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
public virtual ISugarQueryable<T> MergeTableWithSubToList()
|
|
||||||
{
|
|
||||||
_ToSql();
|
|
||||||
var clone = this.Clone();
|
|
||||||
|
|
||||||
clone.QueryBuilder.AppendValues = null;
|
|
||||||
clone.QueryBuilder.SubToListParameters = null;
|
|
||||||
clone.QueryBuilder.AppendColumns = null;
|
|
||||||
Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null, ErrorMessage.GetThrowMessage("'Mapper’ needs to be written after ‘MergeTable’ ", "Mapper 只能在 MergeTable 之后使用"));
|
|
||||||
//Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
|
|
||||||
//Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
|
|
||||||
var sqlobj = clone.ToSql();
|
|
||||||
var index = QueryBuilder.WhereIndex + 1;
|
|
||||||
var result = this.Context.Queryable<T>().AS(SqlBuilder.GetPackTable(sqlobj.Key, "MergeTable")).AddParameters(sqlobj.Value).Select("*").With(SqlWith.Null);
|
|
||||||
result.QueryBuilder.WhereIndex = index;
|
|
||||||
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++;
|
|
||||||
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++;
|
|
||||||
if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle)
|
|
||||||
{
|
|
||||||
result.Select("MergeTable.*");
|
|
||||||
}
|
|
||||||
result.QueryBuilder.AppendValues = this.QueryBuilder.AppendValues;
|
|
||||||
result.QueryBuilder.SubToListParameters = this.QueryBuilder.SubToListParameters;
|
|
||||||
result.QueryBuilder.AppendColumns = this.QueryBuilder.AppendColumns;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISugarQueryable<T> SplitTable(DateTime beginTime, DateTime endTime)
|
public ISugarQueryable<T> SplitTable(DateTime beginTime, DateTime endTime)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user