mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-03 04:13:48 +08:00
Update Core
This commit is contained in:
parent
f7880bf3ac
commit
eef317a3b7
@ -39,7 +39,7 @@ namespace OrmTest.UnitTest
|
||||
base.Check("SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC", null, t3.Key, null, "single t3 Error");
|
||||
|
||||
var t4 = db.Queryable<Student>().OrderBy(it => it.Id).Take(3).ToSql();
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC LIMIT 1,3", null, t4.Key, null, "single t4 Error");
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC LIMIT 0,3", null, t4.Key, null, "single t4 Error");
|
||||
|
||||
var t5 = db.Queryable<Student>().OrderBy(it => it.Id).Skip(3).ToSql();
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` LIMIT 3,9223372036854775807", null, t5.Key,null, "single t5 Error");
|
||||
|
@ -223,7 +223,8 @@ namespace SqlSugar
|
||||
}
|
||||
public virtual string ToSqlString()
|
||||
{
|
||||
string oldOrderBy=this.OrderByValue;
|
||||
string oldOrderBy = this.OrderByValue;
|
||||
string externalOrderBy = oldOrderBy;
|
||||
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.IsValuable())
|
||||
{
|
||||
var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
|
||||
@ -249,23 +250,28 @@ namespace SqlSugar
|
||||
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(); }
|
||||
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);
|
||||
var result = ToPageSql(sql.ToString(), this.Take, this.Skip);
|
||||
if (ExternalPageIndex > 0)
|
||||
{
|
||||
if (externalOrderBy.IsNullOrEmpty()) {
|
||||
externalOrderBy = " ORDER BY GetDate() ";
|
||||
}
|
||||
result = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", externalOrderBy,result);
|
||||
result = ToPageSql2(result,ExternalPageIndex, ExternalPageSize, true);
|
||||
}
|
||||
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)
|
||||
public virtual string ToCountSql(string sql)
|
||||
{
|
||||
string temp = isExternal?ExternalPageTempalte:PageTempalte;
|
||||
|
||||
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(temp, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue);
|
||||
@ -283,7 +289,13 @@ namespace SqlSugar
|
||||
return sql.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public virtual string ToPageSql2(string sql, int? pageIndex, int? pageSize, bool isExternal = false)
|
||||
{
|
||||
string temp = isExternal ? ExternalPageTempalte : PageTempalte;
|
||||
return string.Format(temp, sql.ToString(), (pageIndex - 1) * pageSize+1, pageIndex * pageSize);
|
||||
}
|
||||
|
||||
public virtual string ToJoinString(JoinQueryInfo joinInfo)
|
||||
{
|
||||
return string.Format(
|
||||
|
@ -70,10 +70,10 @@ namespace SqlSugar
|
||||
var memberInfos = new Stack<MemberInfo>();
|
||||
var fieldInfo = member as System.Reflection.FieldInfo;
|
||||
object reval = null;
|
||||
// "descend" toward's the root object reference:
|
||||
MemberExpression memberExpr = null;
|
||||
while (expression is MemberExpression)
|
||||
{
|
||||
var memberExpr = expression as MemberExpression;
|
||||
memberExpr = expression as MemberExpression;
|
||||
memberInfos.Push(memberExpr.Member);
|
||||
if (memberExpr.Expression == null)
|
||||
{
|
||||
@ -106,18 +106,24 @@ namespace SqlSugar
|
||||
var objProp = objReference.GetType().GetProperty(mi.Name);
|
||||
if (objProp == null)
|
||||
{
|
||||
|
||||
objReference = DynamicInvoke(expression,memberExpr);
|
||||
}
|
||||
else
|
||||
{
|
||||
objReference = objProp.GetValue(objReference, null);
|
||||
}
|
||||
objReference = objProp.GetValue(objReference, null);
|
||||
}
|
||||
else if (mi.MemberType == MemberTypes.Field)
|
||||
{
|
||||
var objField = objReference.GetType().GetField(mi.Name);
|
||||
if (objField == null)
|
||||
{
|
||||
|
||||
objReference = DynamicInvoke(expression, memberExpr);
|
||||
}
|
||||
else
|
||||
{
|
||||
objReference = objField.GetValue(objReference);
|
||||
}
|
||||
objReference = objField.GetValue(objReference);
|
||||
}
|
||||
}
|
||||
reval = objReference;
|
||||
@ -194,12 +200,12 @@ namespace SqlSugar
|
||||
return reval;
|
||||
}
|
||||
|
||||
public static object DynamicInvoke(Expression expression)
|
||||
public static object DynamicInvoke(Expression expression,MemberExpression memberExpression=null)
|
||||
{
|
||||
object value = Expression.Lambda(expression).Compile().DynamicInvoke();
|
||||
if (value != null && value.GetType().IsClass() && value.GetType() != ExpressionConst.StringType)
|
||||
if (value != null && value.GetType().IsClass() && value.GetType() != ExpressionConst.StringType&& memberExpression!=null)
|
||||
{
|
||||
value = Expression.Lambda(expression).Compile().DynamicInvoke();
|
||||
value = Expression.Lambda(memberExpression).Compile().DynamicInvoke();
|
||||
}
|
||||
|
||||
return value;
|
||||
|
@ -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.5")]
|
||||
[assembly: AssemblyFileVersion("4.2.0.5")]
|
||||
[assembly: AssemblyVersion("4.2.0.6")]
|
||||
[assembly: AssemblyFileVersion("4.2.0.6")]
|
||||
|
@ -48,7 +48,7 @@ namespace SqlSugar
|
||||
else if (Skip == null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
result = string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt());
|
||||
}
|
||||
else if (Skip != null && Take != null)
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ namespace SqlSugar
|
||||
else if (Skip == null && Take != null)
|
||||
{
|
||||
if (this.OrderByValue == "ORDER BY ") this.OrderByValue += GetSelectValue.Split(',')[0];
|
||||
result= string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 1, Take.ObjToInt());
|
||||
result= string.Format(PageTempalte, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, GetOrderByString, 0, Take.ObjToInt());
|
||||
}
|
||||
else if (Skip != null && Take != null)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
<package >
|
||||
<metadata>
|
||||
<id>sqlSugarCore</id>
|
||||
<version>4.2.0.5</version>
|
||||
<version>4.2.0.6</version>
|
||||
<authors>sunkaixuan</authors>
|
||||
<owners>Landa</owners>
|
||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||
|
@ -8,6 +8,6 @@ namespace OrmTest
|
||||
{
|
||||
public class Config
|
||||
{
|
||||
public static string ConnectionString = @"DataSource=F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite";
|
||||
public static string ConnectionString = @"DataSource=D:\MyGit\SqlSugar\Src\Asp.NetCore\SqlServerTest\src\SqliteTest\DataBase\SqlSugar4xTest.sqlite";
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
@ -39,7 +39,7 @@ namespace OrmTest.UnitTest
|
||||
base.Check("SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC", null, t3.Key, null, "single t3 Error");
|
||||
|
||||
var t4 = db.Queryable<Student>().OrderBy(it => it.Id).Take(3).ToSql();
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC LIMIT 1,3", null, t4.Key, null, "single t4 Error");
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` ORDER BY `ID` ASC LIMIT 0,3", null, t4.Key, null, "single t4 Error");
|
||||
|
||||
var t5 = db.Queryable<Student>().OrderBy(it => it.Id).Skip(3).ToSql();
|
||||
base.Check(@"SELECT `ID`,`SchoolId`,`Name`,`CreateTime` FROM `STudent` LIMIT 3,9223372036854775807", null, t5.Key,null, "single t5 Error");
|
||||
|
Loading…
Reference in New Issue
Block a user