mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
Optimization
This commit is contained in:
parent
955c73e985
commit
842025d02c
@ -131,8 +131,8 @@ namespace OrmTest.Demo
|
|||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
var list4 = db.Queryable<Student>()
|
var list4 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id)
|
||||||
.PartitionBy(it => new { it.Name }).Take(1).OrderBy(it=>it.Id).ToPageList(3,3,ref count);
|
.PartitionBy(st => new { st.Name }).Take(1).OrderBy(st => st.Id,OrderByType.Desc).Select(st => st).ToPageList(1, 1000, ref count);
|
||||||
|
|
||||||
//SqlFunc.AggregateSum(object thisValue)
|
//SqlFunc.AggregateSum(object thisValue)
|
||||||
//SqlFunc.AggregateAvg<TResult>(TResult thisValue)
|
//SqlFunc.AggregateAvg<TResult>(TResult thisValue)
|
||||||
|
@ -24,9 +24,24 @@ namespace OrmTest.UnitTest
|
|||||||
Q2();
|
Q2();
|
||||||
Q3();
|
Q3();
|
||||||
Q4();
|
Q4();
|
||||||
|
q5();
|
||||||
}
|
}
|
||||||
base.End("Method Test");
|
base.End("Method Test");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void q5()
|
||||||
|
{
|
||||||
|
using (var db = GetInstance())
|
||||||
|
{
|
||||||
|
db.MappingTables.Add("School", "SchoolTable");
|
||||||
|
var join5= db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select(st => st)
|
||||||
|
.GroupBy(st=> new{ st.Id,st.Name })
|
||||||
|
.ToSql();
|
||||||
|
string sql = @"SELECT st.* FROM [STudent] st ,[SchoolTable] sc WHERE ( [st].[SchoolId] = [sc].[Id] )GROUP BY [st].[ID],[st].[Name] ";
|
||||||
|
base.Check(sql, null, join5.Key, null, "join 5 Error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Q4()
|
private void Q4()
|
||||||
{
|
{
|
||||||
using (var db = GetInstance())
|
using (var db = GetInstance())
|
||||||
|
@ -67,7 +67,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public IInsertable<T> IgnoreColumns(Expression<Func<T, object>> columns)
|
public IInsertable<T> IgnoreColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
|
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
|
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public IInsertable<T> InsertColumns(Expression<Func<T, object>> columns)
|
public IInsertable<T> InsertColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
|
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it=>this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList();
|
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -564,7 +564,7 @@ namespace SqlSugar
|
|||||||
if (expression is NewExpression)
|
if (expression is NewExpression)
|
||||||
{
|
{
|
||||||
lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple);
|
lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple);
|
||||||
result = string.Join(",", lamResult.GetResultArray().Select(it => this.SqlBuilder.GetTranslationColumnName(typeof(T).Name, it)));
|
result = string.Join(",", lamResult.GetResultArray().Select(it => it));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -608,7 +608,7 @@ namespace SqlSugar
|
|||||||
if (expression is NewExpression)
|
if (expression is NewExpression)
|
||||||
{
|
{
|
||||||
lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple);
|
lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple);
|
||||||
result = string.Join(",", lamResult.GetResultArray().Select(it => this.SqlBuilder.GetTranslationColumnName(typeof(T).Name, it)));
|
result = string.Join(",", lamResult.GetResultArray());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -256,13 +256,18 @@ namespace SqlSugar
|
|||||||
if (externalOrderBy.IsNullOrEmpty()) {
|
if (externalOrderBy.IsNullOrEmpty()) {
|
||||||
externalOrderBy = " ORDER BY GetDate() ";
|
externalOrderBy = " ORDER BY GetDate() ";
|
||||||
}
|
}
|
||||||
result = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", externalOrderBy,result);
|
result = string.Format("SELECT *,ROW_NUMBER() OVER({0}) AS RowIndex2 FROM ({1}) ExternalTable ", GetExternalOrderBy(externalOrderBy),result);
|
||||||
result = ToPageSql2(result,ExternalPageIndex, ExternalPageSize, true);
|
result = ToPageSql2(result,ExternalPageIndex, ExternalPageSize, true);
|
||||||
}
|
}
|
||||||
this.OrderByValue = oldOrderBy;
|
this.OrderByValue = oldOrderBy;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual string GetExternalOrderBy(string externalOrderBy)
|
||||||
|
{
|
||||||
|
return Regex.Replace(externalOrderBy, @"\[\w+\]\.", "");
|
||||||
|
}
|
||||||
|
|
||||||
public virtual string ToCountSql(string sql)
|
public virtual string ToCountSql(string sql)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns)
|
public IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
|
var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -77,7 +77,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public IUpdateable<T> UpdateColumns(Expression<Func<T, object>> columns)
|
public IUpdateable<T> UpdateColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
|
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
List<string> primaryKeys = GetPrimaryKeys();
|
List<string> primaryKeys = GetPrimaryKeys();
|
||||||
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
|
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
|
||||||
{
|
{
|
||||||
|
@ -101,6 +101,7 @@ namespace SqlSugar
|
|||||||
switch (this._ResolveExpressType)
|
switch (this._ResolveExpressType)
|
||||||
{
|
{
|
||||||
case ResolveExpressType.ArraySingle:
|
case ResolveExpressType.ArraySingle:
|
||||||
|
case ResolveExpressType.ArrayMultiple:
|
||||||
case ResolveExpressType.SelectSingle:
|
case ResolveExpressType.SelectSingle:
|
||||||
case ResolveExpressType.SelectMultiple:
|
case ResolveExpressType.SelectMultiple:
|
||||||
case ResolveExpressType.Update:
|
case ResolveExpressType.Update:
|
||||||
|
@ -103,8 +103,9 @@ namespace SqlSugar
|
|||||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||||
base.Context.Result.Append(fieldName);
|
base.Context.Result.Append(fieldName);
|
||||||
break;
|
break;
|
||||||
|
case ResolveExpressType.ArrayMultiple:
|
||||||
case ResolveExpressType.ArraySingle:
|
case ResolveExpressType.ArraySingle:
|
||||||
fieldName = GetArrayName(parameter, expression, isLeft);
|
fieldName = GetName(parameter, expression, isLeft,parameter.Context.ResolveType== ResolveExpressType.ArraySingle);
|
||||||
base.Context.Result.Append(fieldName);
|
base.Context.Result.Append(fieldName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -166,10 +167,5 @@ namespace SqlSugar
|
|||||||
fieldName = Context.GetTranslationColumnName(fieldName);
|
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||||
return fieldName;
|
return fieldName;
|
||||||
}
|
}
|
||||||
private string GetArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
|
||||||
{
|
|
||||||
string fieldName = expression.Member.Name;
|
|
||||||
return fieldName;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace SqlSugar
|
|||||||
case ResolveExpressType.FieldSingle:
|
case ResolveExpressType.FieldSingle:
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.FieldMultiple:
|
case ResolveExpressType.FieldMultiple:
|
||||||
break;
|
case ResolveExpressType.ArrayMultiple:
|
||||||
case ResolveExpressType.ArraySingle:
|
case ResolveExpressType.ArraySingle:
|
||||||
foreach (var item in expression.Arguments)
|
foreach (var item in expression.Arguments)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,7 @@ namespace SqlSugar
|
|||||||
public override string GetNoTranslationColumnName(string name)
|
public override string GetNoTranslationColumnName(string name)
|
||||||
{
|
{
|
||||||
if (!name.Contains("`")) return name;
|
if (!name.Contains("`")) return name;
|
||||||
return name == null ? string.Empty : Regex.Match(name, @"\`(.*?)\`").Groups[1].Value;
|
return name == null ? string.Empty : Regex.Match(name, @".*\`(.*?)\`").Groups[1].Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace SqlSugar
|
|||||||
public override string GetNoTranslationColumnName(string name)
|
public override string GetNoTranslationColumnName(string name)
|
||||||
{
|
{
|
||||||
if (!name.Contains("[")) return name;
|
if (!name.Contains("[")) return name;
|
||||||
return name == null ? string.Empty : Regex.Match(name, @"\[(.*?)\]").Groups[1].Value;
|
return name == null ? string.Empty : Regex.Match(name, @".*\[(.*?)\]").Groups[1].Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ namespace SqlSugar
|
|||||||
public override string GetNoTranslationColumnName(string name)
|
public override string GetNoTranslationColumnName(string name)
|
||||||
{
|
{
|
||||||
if (!name.Contains("`")) return name;
|
if (!name.Contains("`")) return name;
|
||||||
return name == null ? string.Empty : Regex.Match(name, @"\`(.*?)\`").Groups[1].Value;
|
return name == null ? string.Empty : Regex.Match(name, @".*\`(.*?)\`").Groups[1].Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user