mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-30 04:32:05 +08:00
Error prompts for optimizing aliases for multi-table queries
This commit is contained in:
parent
f6d3241d1d
commit
56a3591307
@ -120,7 +120,32 @@ namespace OrmTest.UnitTest
|
||||
}, t7.Key, t7.Value, "select t7 Error");
|
||||
#endregion
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var t8 = db.Queryable<Student, School, School>((st, sc, sc2) => new object[] {
|
||||
JoinType.Left,st.SchoolId==sc.Id,
|
||||
JoinType.Left,sc2.Id==sc.Id
|
||||
}).Where(st => st.Id > 0)
|
||||
.Select<School>((st1) => new School() { Id = st1.Id }).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var t8 = db.Queryable<Student, School>((st, sc) =>st.Id==sc.Id).Where(st => st.Id > 0)
|
||||
.Select<School>((st1) => new School() { Id = st1.Id }).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -984,6 +984,7 @@ namespace SqlSugar
|
||||
}
|
||||
protected ISugarQueryable<TResult> _Select<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression,"Select");
|
||||
this.Context.InitMppingInfo<TResult>();
|
||||
var result = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
|
||||
result.Context = this.Context;
|
||||
@ -994,12 +995,14 @@ namespace SqlSugar
|
||||
}
|
||||
protected void _Where(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Where");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var result = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple);
|
||||
QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), result.GetResultString()));
|
||||
}
|
||||
protected ISugarQueryable<T> _OrderBy(Expression expression, OrderByType type = OrderByType.Asc)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "OrderBy");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
OrderBy(lamResult.GetResultString() + UtilConstants.Space + type.ToString().ToUpper());
|
||||
@ -1007,6 +1010,7 @@ namespace SqlSugar
|
||||
}
|
||||
protected ISugarQueryable<T> _GroupBy(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "GroupBy");
|
||||
LambdaExpression lambda = expression as LambdaExpression;
|
||||
expression = lambda.Body;
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
@ -1027,6 +1031,7 @@ namespace SqlSugar
|
||||
}
|
||||
protected TResult _Min<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Main");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
var result = Min<TResult>(lamResult.GetResultString());
|
||||
@ -1035,12 +1040,14 @@ namespace SqlSugar
|
||||
}
|
||||
protected TResult _Avg<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Avg");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
return Avg<TResult>(lamResult.GetResultString());
|
||||
}
|
||||
protected TResult _Max<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Max");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
var reslut = Max<TResult>(lamResult.GetResultString());
|
||||
@ -1049,6 +1056,7 @@ namespace SqlSugar
|
||||
}
|
||||
protected TResult _Sum<TResult>(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Sum");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
|
||||
var reslut = Sum<TResult>(lamResult.GetResultString());
|
||||
@ -1083,6 +1091,7 @@ namespace SqlSugar
|
||||
}
|
||||
public ISugarQueryable<T> _PartitionBy(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "PartitionBy");
|
||||
LambdaExpression lambda = expression as LambdaExpression;
|
||||
expression = lambda.Body;
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
@ -1103,6 +1112,7 @@ namespace SqlSugar
|
||||
}
|
||||
protected ISugarQueryable<T> _Having(Expression expression)
|
||||
{
|
||||
QueryBuilder.CheckExpression(expression, "Having");
|
||||
var isSingle = QueryBuilder.IsSingle();
|
||||
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple);
|
||||
Having(lamResult.GetResultString());
|
||||
|
@ -508,5 +508,24 @@ namespace SqlSugar
|
||||
var result = this.Context.EntityMaintenance.GetTableName(entityName);
|
||||
return this.Builder.GetTranslationTableName(result);
|
||||
}
|
||||
|
||||
public void CheckExpression(Expression expression, string methodName)
|
||||
{
|
||||
if (IsSingle() == false&& this.JoinExpression!=null)
|
||||
{
|
||||
var jsoinParameters = (this.JoinExpression as LambdaExpression).Parameters;
|
||||
var currentParametres = (expression as LambdaExpression).Parameters;
|
||||
if (currentParametres != null && currentParametres.Count > 0)
|
||||
{
|
||||
foreach (var item in currentParametres)
|
||||
{
|
||||
var index = currentParametres.IndexOf(item);
|
||||
var name = item.Name;
|
||||
var joinName = jsoinParameters[index].Name;
|
||||
Check.Exception(name.ToLower() != joinName.ToLower(), ErrorMessage.ExpressionCheck, joinName, methodName, name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -37,5 +37,12 @@ namespace SqlSugar
|
||||
return ErrorMessage.GetThrowMessage("Connection open error . {0}", " 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,实在找不到原因请先Google错误信息:{0}.");
|
||||
}
|
||||
}
|
||||
public static string ExpressionCheck
|
||||
{
|
||||
get
|
||||
{
|
||||
return ErrorMessage.GetThrowMessage("Join {0} needs to be the same as {1} {2}", "别名不一致错误,{1}中的{2}需要和Join {0}中的名称一致,特殊需求可以使用.Select((x,y)=>new{{ id=x.id,name=y.name}}).MergeTable().Orderby(xxx=>xxx.Id)功能将Select中的多表结果集变成单表,这样就可以不限制别名一样");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user