Update exp to sql

This commit is contained in:
sunkaixuan 2022-07-28 15:50:20 +08:00
parent da59793ceb
commit a6d1993a7c

View File

@ -110,6 +110,29 @@ namespace SqlSugar
var index = 0;
foreach (var item in joinInfos)
{
lastShortName = OneToMany(ref formInfo, ref i, queryable, ref index, item);
}
var isAny = (memberInfo.Expression as MethodCallExpression).Method.Name == "Any";
queryable.Select(isAny ? "1" : " COUNT(1) ");
var last = subInfos.First();
var FirstPkColumn = last.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
Check.ExceptionEasy(FirstPkColumn == null, $"{ last.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{ last.ThisEntityInfo.EntityName} 缺少主键");
var PkColumn = last.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == last.Nav.Name);
Check.ExceptionEasy(PkColumn == null, $"{ last.ParentEntityInfo.EntityName} no found {last.Nav.Name}", $"{ last.ParentEntityInfo.EntityName} 不存在 {last.Nav.Name}");
queryable.Where($" {this.shorName}.{ queryable.SqlBuilder.GetTranslationColumnName(PkColumn.DbColumnName)} = {masterShortName}.{queryable.SqlBuilder.GetTranslationColumnName(FirstPkColumn.DbColumnName)} ");
queryable.WhereIF(this.whereSql.HasValue(), GetWhereSql1(this.whereSql,lastShortName, joinInfos, queryable.SqlBuilder));
MapperSql.Sql = $"( {queryable.ToSql().Key} ) ";
if (isAny)
{
MapperSql.Sql = $" EXISTS( {MapperSql.Sql}) ";
}
return MapperSql;
}
private static string OneToMany(ref ExpressionItems formInfo, ref int i, ISugarQueryable<object> queryable, ref int index, ExpressionItems item)
{
string lastShortName;
var shortName = item.ThisEntityInfo.DbTableName + i;
EntityColumnInfo pkColumn;
EntityColumnInfo navColum;
@ -130,23 +153,7 @@ namespace SqlSugar
index++;
lastShortName = shortName;
formInfo = item;
}
var isAny = (memberInfo.Expression as MethodCallExpression).Method.Name == "Any";
queryable.Select(isAny ? "1" : " COUNT(1) ");
var last = subInfos.First();
var FirstPkColumn = last.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
Check.ExceptionEasy(FirstPkColumn == null, $"{ last.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{ last.ThisEntityInfo.EntityName} 缺少主键");
var PkColumn = last.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == last.Nav.Name);
Check.ExceptionEasy(PkColumn == null, $"{ last.ParentEntityInfo.EntityName} no found {last.Nav.Name}", $"{ last.ParentEntityInfo.EntityName} 不存在 {last.Nav.Name}");
queryable.Where($" {this.shorName}.{ queryable.SqlBuilder.GetTranslationColumnName(PkColumn.DbColumnName)} = {masterShortName}.{queryable.SqlBuilder.GetTranslationColumnName(FirstPkColumn.DbColumnName)} ");
queryable.WhereIF(this.whereSql.HasValue(), GetWhereSql1(this.whereSql,lastShortName, joinInfos, queryable.SqlBuilder));
MapperSql.Sql = $"( {queryable.ToSql().Key} ) ";
if (isAny)
{
MapperSql.Sql = $" EXISTS( {MapperSql.Sql}) ";
}
return MapperSql;
return lastShortName;
}