Optimization

This commit is contained in:
sunkaixuan 2017-07-16 02:38:23 +08:00
parent 955c73e985
commit 842025d02c
12 changed files with 36 additions and 19 deletions

View File

@ -131,8 +131,8 @@ namespace OrmTest.Demo
int count = 0;
var list4 = db.Queryable<Student>()
.PartitionBy(it => new { it.Name }).Take(1).OrderBy(it=>it.Id).ToPageList(3,3,ref count);
var list4 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id)
.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.AggregateAvg<TResult>(TResult thisValue)

View File

@ -24,9 +24,24 @@ namespace OrmTest.UnitTest
Q2();
Q3();
Q4();
q5();
}
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()
{
using (var db = GetInstance())

View File

@ -67,7 +67,7 @@ namespace SqlSugar
}
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();
return this;
}
@ -79,7 +79,7 @@ namespace SqlSugar
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();
return this;
}

View File

@ -564,7 +564,7 @@ namespace SqlSugar
if (expression is NewExpression)
{
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
{
@ -608,7 +608,7 @@ namespace SqlSugar
if (expression is NewExpression)
{
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
{

View File

@ -256,13 +256,18 @@ namespace SqlSugar
if (externalOrderBy.IsNullOrEmpty()) {
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);
}
this.OrderByValue = oldOrderBy;
return result;
}
public virtual string GetExternalOrderBy(string externalOrderBy)
{
return Regex.Replace(externalOrderBy, @"\[\w+\]\.", "");
}
public virtual string ToCountSql(string sql)
{

View File

@ -48,7 +48,7 @@ namespace SqlSugar
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();
return this;
}
@ -77,7 +77,7 @@ namespace SqlSugar
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();
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
{

View File

@ -101,6 +101,7 @@ namespace SqlSugar
switch (this._ResolveExpressType)
{
case ResolveExpressType.ArraySingle:
case ResolveExpressType.ArrayMultiple:
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
case ResolveExpressType.Update:

View File

@ -103,8 +103,9 @@ namespace SqlSugar
fieldName = GetMultipleName(parameter, expression, isLeft);
base.Context.Result.Append(fieldName);
break;
case ResolveExpressType.ArrayMultiple:
case ResolveExpressType.ArraySingle:
fieldName = GetArrayName(parameter, expression, isLeft);
fieldName = GetName(parameter, expression, isLeft,parameter.Context.ResolveType== ResolveExpressType.ArraySingle);
base.Context.Result.Append(fieldName);
break;
default:
@ -166,10 +167,5 @@ namespace SqlSugar
fieldName = Context.GetTranslationColumnName(fieldName);
return fieldName;
}
private string GetArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
{
string fieldName = expression.Member.Name;
return fieldName;
}
}
}

View File

@ -28,7 +28,7 @@ namespace SqlSugar
case ResolveExpressType.FieldSingle:
break;
case ResolveExpressType.FieldMultiple:
break;
case ResolveExpressType.ArrayMultiple:
case ResolveExpressType.ArraySingle:
foreach (var item in expression.Arguments)
{

View File

@ -42,7 +42,7 @@ namespace SqlSugar
public override string GetNoTranslationColumnName(string 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;
}
}
}

View File

@ -45,7 +45,7 @@ namespace SqlSugar
public override string GetNoTranslationColumnName(string 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;
}
}
}

View File

@ -40,7 +40,7 @@ namespace SqlSugar
public override string GetNoTranslationColumnName(string 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;
}
}
}