mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-08 10:24:55 +08:00
Update exp to sql
This commit is contained in:
@@ -110,6 +110,29 @@ namespace SqlSugar
|
|||||||
var index = 0;
|
var index = 0;
|
||||||
foreach (var item in joinInfos)
|
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;
|
var shortName = item.ThisEntityInfo.DbTableName + i;
|
||||||
EntityColumnInfo pkColumn;
|
EntityColumnInfo pkColumn;
|
||||||
EntityColumnInfo navColum;
|
EntityColumnInfo navColum;
|
||||||
@@ -130,23 +153,7 @@ namespace SqlSugar
|
|||||||
index++;
|
index++;
|
||||||
lastShortName = shortName;
|
lastShortName = shortName;
|
||||||
formInfo = item;
|
formInfo = item;
|
||||||
}
|
return lastShortName;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user