mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-16 16:50:41 +08:00
Update Core
This commit is contained in:
parent
6c3e3a68a0
commit
2a1e2cfd34
@ -390,8 +390,19 @@ namespace SqlSugar
|
||||
|
||||
public virtual int Count()
|
||||
{
|
||||
QueryBuilder.IsCount = true;
|
||||
var sql = QueryBuilder.ToSqlString();
|
||||
|
||||
var sql = string.Empty;
|
||||
if (QueryBuilder.PartitionByValue.IsValuable())
|
||||
{
|
||||
sql = QueryBuilder.ToSqlString();
|
||||
sql = QueryBuilder.ToCountSql(sql);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
QueryBuilder.IsCount = true;
|
||||
sql = QueryBuilder.ToSqlString();
|
||||
}
|
||||
var reval = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray());
|
||||
RestoreMapping();
|
||||
QueryBuilder.IsCount = false;
|
||||
@ -465,8 +476,16 @@ namespace SqlSugar
|
||||
{
|
||||
if (pageIndex == 0)
|
||||
pageIndex = 1;
|
||||
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
|
||||
QueryBuilder.Take = pageSize;
|
||||
if (QueryBuilder.PartitionByValue.IsValuable())
|
||||
{
|
||||
QueryBuilder.ExternalPageIndex = pageIndex;
|
||||
QueryBuilder.ExternalPageSize = pageSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
|
||||
QueryBuilder.Take = pageSize;
|
||||
}
|
||||
return ToDataTable();
|
||||
}
|
||||
public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber)
|
||||
@ -483,8 +502,16 @@ namespace SqlSugar
|
||||
{
|
||||
if (pageIndex == 0)
|
||||
pageIndex = 1;
|
||||
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
|
||||
QueryBuilder.Take = pageSize;
|
||||
if (QueryBuilder.PartitionByValue.IsValuable())
|
||||
{
|
||||
QueryBuilder.ExternalPageIndex = pageIndex;
|
||||
QueryBuilder.ExternalPageSize = pageSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
QueryBuilder.Skip = (pageIndex - 1) * pageSize;
|
||||
QueryBuilder.Take = pageSize;
|
||||
}
|
||||
return ToList();
|
||||
}
|
||||
public virtual List<T> ToPageList(int pageIndex, int pageSize, ref int totalNumber)
|
||||
|
@ -34,6 +34,8 @@ namespace SqlSugar
|
||||
#region Splicing basic
|
||||
public bool IsCount { get; set; }
|
||||
public int? Skip { get; set; }
|
||||
public int ExternalPageIndex { get; set; }
|
||||
public int ExternalPageSize { get; set; }
|
||||
public int? Take { get; set; }
|
||||
public string OrderByValue { get; set; }
|
||||
public object SelectValue { get; set; }
|
||||
@ -127,6 +129,13 @@ namespace SqlSugar
|
||||
return @"SELECT * FROM ({0}) T WHERE RowIndex BETWEEN {1} AND {2}";
|
||||
}
|
||||
}
|
||||
public virtual string ExternalPageTempalte
|
||||
{
|
||||
get
|
||||
{
|
||||
return @"SELECT * FROM ({0}) T WHERE RowIndex2 BETWEEN {1} AND {2}";
|
||||
}
|
||||
}
|
||||
public virtual string DefaultOrderByTemplate
|
||||
{
|
||||
get
|
||||
@ -214,6 +223,7 @@ namespace SqlSugar
|
||||
}
|
||||
public virtual string ToSqlString()
|
||||
{
|
||||
string oldOrderBy=this.OrderByValue;
|
||||
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.IsValuable())
|
||||
{
|
||||
var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
|
||||
@ -236,27 +246,44 @@ namespace SqlSugar
|
||||
}
|
||||
var isRowNumber = Skip != null || Take != null;
|
||||
var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString);
|
||||
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos,(!isRowNumber&&this.OrderByValue.IsValuable())?GetOrderByString:null);
|
||||
sql.Replace("{$:OrderByString:$}", isRowNumber? (this.IsCount?null: rowNumberString): null);
|
||||
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (!isRowNumber && this.OrderByValue.IsValuable()) ? GetOrderByString : null);
|
||||
sql.Replace("{$:OrderByString:$}", isRowNumber ? (this.IsCount ? null : rowNumberString) : null);
|
||||
if (IsCount) { return sql.ToString(); }
|
||||
if (Skip != null && Take == null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), Skip.ObjToInt() + 1, long.MaxValue);
|
||||
var result= ToPageSql(sql.ToString(),this.Take,this.Skip);
|
||||
if (ExternalPageIndex > 0) {
|
||||
result = string.Format("SELECT *,ROW_NUMBER() OVER(ORDER BY GETDATE()) AS RowIndex2 FROM ({0}) ExternalTable ", result);
|
||||
result = ToPageSql(result, (ExternalPageIndex-1)*ExternalPageSize,ExternalPageSize,true);
|
||||
}
|
||||
else if (Skip == null && Take != null)
|
||||
this.OrderByValue = oldOrderBy;
|
||||
return result;
|
||||
}
|
||||
|
||||
public virtual string ToCountSql(string sql) {
|
||||
|
||||
return string.Format(" SELECT COUNT(1) FROM ({0}) CountTable ",sql);
|
||||
}
|
||||
|
||||
public virtual string ToPageSql(string sql,int? take,int? skip,bool isExternal=false)
|
||||
{
|
||||
string temp = isExternal?ExternalPageTempalte:PageTempalte;
|
||||
if (skip != null && take == null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), 1, Take.ObjToInt());
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue);
|
||||
}
|
||||
else if (Skip != null && Take != null)
|
||||
else if (skip == null && take != null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), Skip.ObjToInt() + 1, Skip.ObjToInt() + Take.ObjToInt());
|
||||
return string.Format(temp, sql.ToString(), 1, take.ObjToInt());
|
||||
}
|
||||
else if (skip != null && take != null)
|
||||
{
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, skip.ObjToInt() + take.ObjToInt());
|
||||
}
|
||||
else
|
||||
{
|
||||
return sql.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual string ToJoinString(JoinQueryInfo joinInfo)
|
||||
{
|
||||
return string.Format(
|
||||
|
@ -48,9 +48,17 @@ namespace SqlSugar
|
||||
}
|
||||
public static bool IsLogicOperator(string operatorValue)
|
||||
{
|
||||
return operatorValue=="&&"|| operatorValue=="||";
|
||||
return operatorValue == "&&" || operatorValue == "||";
|
||||
}
|
||||
public static bool IsComparisonOperator(BinaryExpression expression)
|
||||
|
||||
public static bool IsLogicOperator(Expression expression)
|
||||
{
|
||||
return expression.NodeType == ExpressionType.And ||
|
||||
expression.NodeType == ExpressionType.AndAlso ||
|
||||
expression.NodeType == ExpressionType.Or ||
|
||||
expression.NodeType == ExpressionType.OrElse;
|
||||
}
|
||||
public static bool IsComparisonOperator(Expression expression)
|
||||
{
|
||||
return expression.NodeType != ExpressionType.And &&
|
||||
expression.NodeType != ExpressionType.AndAlso &&
|
||||
@ -120,7 +128,7 @@ namespace SqlSugar
|
||||
{
|
||||
object reval = null;
|
||||
FieldInfo field = (FieldInfo)memberExpr.Member;
|
||||
Check.Exception(field.IsPrivate,string.Format(" Field \"{0}\" can't be private ",field.Name));
|
||||
Check.Exception(field.IsPrivate, string.Format(" Field \"{0}\" can't be private ", field.Name));
|
||||
reval = field.GetValue(memberExpr.Member);
|
||||
if (reval != null && reval.GetType().IsClass() && reval.GetType() != ExpressionConst.StringType)
|
||||
{
|
||||
@ -143,6 +151,23 @@ namespace SqlSugar
|
||||
return reval;
|
||||
}
|
||||
|
||||
|
||||
public static bool IsConstExpression(MemberExpression memberExpr)
|
||||
{
|
||||
var result = false;
|
||||
while (memberExpr!=null&&memberExpr.Expression != null)
|
||||
{
|
||||
var isConst = memberExpr.Expression is ConstantExpression;
|
||||
if (isConst)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
memberExpr = memberExpr.Expression as MemberExpression;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static object GetPropertyValue(MemberExpression memberExpr)
|
||||
{
|
||||
object reval = null;
|
||||
@ -191,7 +216,7 @@ namespace SqlSugar
|
||||
|
||||
public static bool IsEntity(Type type)
|
||||
{
|
||||
return type.IsClass() && type!=ExpressionConst.StringType;
|
||||
return type.IsClass() && type != ExpressionConst.StringType;
|
||||
}
|
||||
|
||||
public static bool IsValueType(Type type)
|
||||
|
@ -14,8 +14,20 @@ namespace SqlSugar
|
||||
var isLeft = parameter.IsLeft;
|
||||
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
|
||||
var expression = base.Expression as MemberExpression;
|
||||
if (expression.Expression != null&& expression.Expression.NodeType!= ExpressionType.Parameter) {
|
||||
var value= ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
var isValue = expression.Member.Name == "Value" && expression.Member.GetType().Name == "RuntimePropertyInfo";
|
||||
var isBool = expression.Type == PubConst.BoolType;
|
||||
var isValueBool = isValue && isBool && parameter.BaseExpression == null;
|
||||
if (isValueBool)
|
||||
{
|
||||
isValue = false;
|
||||
}
|
||||
else if (isValue)
|
||||
{
|
||||
expression = expression.Expression as MemberExpression;
|
||||
}
|
||||
else if (expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter && !isValueBool)
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
if (isSetTempData)
|
||||
{
|
||||
baseParameter.CommonTempData = value;
|
||||
@ -31,7 +43,7 @@ namespace SqlSugar
|
||||
switch (parameter.Context.ResolveType)
|
||||
{
|
||||
case ResolveExpressType.SelectSingle:
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
if (isSetTempData)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
@ -42,7 +54,7 @@ namespace SqlSugar
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.SelectMultiple:
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
if (isSetTempData)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
@ -53,42 +65,46 @@ namespace SqlSugar
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.WhereSingle:
|
||||
if (isSetTempData)
|
||||
{
|
||||
fieldName = getSingleName(parameter, expression, null);
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
if (expression.Type == PubConst.BoolType&&baseParameter.OperatorValue.IsNullOrEmpty()) {
|
||||
fieldName= "( "+fieldName+"=1 )";
|
||||
}
|
||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.WhereMultiple:
|
||||
var isSingle = parameter.Context.ResolveType == ResolveExpressType.WhereSingle;
|
||||
if (isSetTempData)
|
||||
{
|
||||
fieldName = getMultipleName(parameter, expression, null);
|
||||
fieldName = GetName(parameter, expression, null,isSingle);
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
if (isValueBool)
|
||||
{
|
||||
fieldName = GetName(parameter, expression.Expression as MemberExpression, isLeft,isSingle);
|
||||
}
|
||||
else if (ExpressionTool.IsConstExpression(expression))
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
base.AppendValue(parameter, isLeft, value);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = GetName(parameter, expression, isLeft,isSingle);
|
||||
}
|
||||
if (expression.Type == PubConst.BoolType && baseParameter.OperatorValue.IsNullOrEmpty())
|
||||
{
|
||||
fieldName = "( " + fieldName + "=1 )";
|
||||
}
|
||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
case ResolveExpressType.FieldMultiple:
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
case ResolveExpressType.ArraySingle:
|
||||
fieldName = getArrayName(parameter, expression, isLeft);
|
||||
fieldName = GetArrayName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
default:
|
||||
@ -98,7 +114,7 @@ namespace SqlSugar
|
||||
|
||||
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
|
||||
{
|
||||
if (parameter.BaseExpression is BinaryExpression|| (parameter.BaseParameter.CommonTempData!=null&¶meter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
||||
if (parameter.BaseExpression is BinaryExpression || (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
||||
{
|
||||
fieldName = string.Format(" {0} ", fieldName);
|
||||
if (isLeft == true)
|
||||
@ -122,23 +138,35 @@ namespace SqlSugar
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
private string getMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
private string GetName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft, bool isSingle)
|
||||
{
|
||||
if (isSingle)
|
||||
{
|
||||
return GetSingleName(parameter, expression, IsLeft);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetMultipleName(parameter,expression,IsLeft);
|
||||
}
|
||||
}
|
||||
|
||||
private string GetMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
{
|
||||
string shortName = expression.Expression.ToString();
|
||||
string fieldName = expression.Member.Name;
|
||||
fieldName=this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||
fieldName =Context.GetTranslationColumnName(shortName + "." + fieldName);
|
||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||
fieldName = Context.GetTranslationColumnName(shortName + "." + fieldName);
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
private string getSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
private string GetSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
{
|
||||
string fieldName = expression.Member.Name;
|
||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||
return fieldName;
|
||||
}
|
||||
private string getArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
private string GetArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||
{
|
||||
string fieldName = expression.Member.Name;
|
||||
return fieldName;
|
||||
|
@ -17,5 +17,5 @@ using System.Runtime.InteropServices;
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("1c022a5c-4e4d-4026-a8a3-f659b9740a1a")]
|
||||
[assembly: AssemblyVersion("4.2.0.4")]
|
||||
[assembly: AssemblyFileVersion("4.2.0.4")]
|
||||
[assembly: AssemblyVersion("4.2.0.5")]
|
||||
[assembly: AssemblyFileVersion("4.2.0.5")]
|
||||
|
@ -38,6 +38,9 @@ namespace SqlSugar
|
||||
new KeyValuePair<string, CSharpDataType>("text",CSharpDataType.@string),
|
||||
new KeyValuePair<string, CSharpDataType>("char",CSharpDataType.@string),
|
||||
new KeyValuePair<string, CSharpDataType>("enum",CSharpDataType.@string),
|
||||
new KeyValuePair<string, CSharpDataType>("mediumtext",CSharpDataType.@string),
|
||||
new KeyValuePair<string, CSharpDataType>("tinytext",CSharpDataType.@string),
|
||||
new KeyValuePair<string, CSharpDataType>("longtext",CSharpDataType.@string),
|
||||
|
||||
new KeyValuePair<string, CSharpDataType>("tinyint",CSharpDataType.@byte),
|
||||
new KeyValuePair<string, CSharpDataType>("smallint",CSharpDataType.@short),
|
||||
|
@ -1,21 +1,27 @@
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class MySqlQueryable<T>:QueryableProvider<T>
|
||||
public class MySqlQueryable<T> : QueryableProvider<T>
|
||||
{
|
||||
public override ISugarQueryable<T> With(string withString)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
public override ISugarQueryable<T> PartitionBy(string groupFileds)
|
||||
{
|
||||
this.GroupBy(groupFileds);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
public class MySqlQueryable<T,T2> : QueryableProvider<T,T2>
|
||||
public class MySqlQueryable<T, T2> : QueryableProvider<T, T2>
|
||||
{
|
||||
|
||||
}
|
||||
public class MySqlQueryable<T, T2,T3> : QueryableProvider<T, T2,T3>
|
||||
public class MySqlQueryable<T, T2, T3> : QueryableProvider<T, T2, T3>
|
||||
{
|
||||
|
||||
}
|
||||
public class MySqlQueryable<T, T2,T3,T4> : QueryableProvider<T, T2,T3,T4>
|
||||
public class MySqlQueryable<T, T2, T3, T4> : QueryableProvider<T, T2, T3, T4>
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -35,31 +35,34 @@ namespace SqlSugar
|
||||
}
|
||||
public override string ToSqlString()
|
||||
{
|
||||
string oldOrderValue = this.OrderByValue;
|
||||
string result = null;
|
||||
sql = new StringBuilder();
|
||||
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString);
|
||||
if (IsCount) { return sql.ToString(); }
|
||||
if (Skip != null && Take == null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
|
||||
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
|
||||
}
|
||||
else if (Skip == null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
}
|
||||
else if (Skip != null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt(): 0, Take);
|
||||
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt() : 0, Take);
|
||||
}
|
||||
else
|
||||
{
|
||||
return sql.ToString();
|
||||
result = sql.ToString();
|
||||
}
|
||||
|
||||
this.OrderByValue = oldOrderValue;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Get SQL Partial
|
||||
|
@ -15,7 +15,7 @@ namespace SqlSugar
|
||||
List<DbColumnInfo> columns = new List<DbColumnInfo>();
|
||||
if (entityInfo.Columns.IsValuable())
|
||||
{
|
||||
foreach (var item in entityInfo.Columns)
|
||||
foreach (var item in entityInfo.Columns.Where(it => it.IsIgnore == false))
|
||||
{
|
||||
DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item);
|
||||
columns.Add(dbColumnInfo);
|
||||
|
@ -6,6 +6,12 @@
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
public override ISugarQueryable<T> PartitionBy(string groupFileds)
|
||||
{
|
||||
this.GroupBy(groupFileds);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
public class SqliteQueryable<T,T2> : QueryableProvider<T,T2>
|
||||
{
|
||||
|
@ -35,29 +35,32 @@ namespace SqlSugar
|
||||
}
|
||||
public override string ToSqlString()
|
||||
{
|
||||
string result = null;
|
||||
string oldOrderBy = this.OrderByValue;
|
||||
sql = new StringBuilder();
|
||||
sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString);
|
||||
if (IsCount) { return sql.ToString(); }
|
||||
if (Skip != null && Take == null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
|
||||
result= string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString, Skip.ObjToInt(), long.MaxValue);
|
||||
}
|
||||
else if (Skip == null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
result= string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
}
|
||||
else if (Skip != null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
return string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt(): 0, Take);
|
||||
result= string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, Skip.ObjToInt() > 0 ? Skip.ObjToInt(): 0, Take);
|
||||
}
|
||||
else
|
||||
{
|
||||
return sql.ToString();
|
||||
result= sql.ToString();
|
||||
}
|
||||
|
||||
this.OrderByValue = oldOrderBy;
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -2,7 +2,7 @@
|
||||
<package >
|
||||
<metadata>
|
||||
<id>sqlSugarCore</id>
|
||||
<version>4.2.0.4</version>
|
||||
<version>4.2.0.5</version>
|
||||
<authors>sunkaixuan</authors>
|
||||
<owners>Landa</owners>
|
||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user