Update exp to sql

This commit is contained in:
sunkaixuan
2022-05-03 11:28:01 +08:00
parent 5f7bf91b65
commit 584c70a577
2 changed files with 22 additions and 3 deletions

View File

@@ -83,6 +83,10 @@ namespace OrmTest
.Where(it => it.SchoolA.TeacherList.Any()) .Where(it => it.SchoolA.TeacherList.Any())
.ToList(); .ToList();
var list3333 = db.Queryable<StudentA>()
.Includes(it => it.SchoolA, it => it.TeacherList)
.Where(it => it.SchoolA.TeacherList.Any(z=>z.Id>2))
.ToList();
var list3 = db.Queryable<StudentA>() var list3 = db.Queryable<StudentA>()
.Includes(x => x.SchoolA, x => x.RoomList)//2个参数就是 then Include .Includes(x => x.SchoolA, x => x.RoomList)//2个参数就是 then Include

View File

@@ -110,14 +110,14 @@ namespace SqlSugar
foreach (var item in joinInfos) foreach (var item in joinInfos)
{ {
var shortName = item.ThisEntityInfo.DbTableName + i; var shortName = item.ThisEntityInfo.DbTableName + i;
EntityColumnInfo pkColumn ; EntityColumnInfo pkColumn;
EntityColumnInfo navColum ; EntityColumnInfo navColum;
if (index == 0) if (index == 0)
{ {
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name); pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
} }
else else
{ {
pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); pkColumn = item.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name); navColum = item.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.Nav.Name);
@@ -137,6 +137,7 @@ namespace SqlSugar
var PkColumn = last.ParentEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == last.Nav.Name); 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}"); 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.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} ) "; MapperSql.Sql = $"( {queryable.ToSql().Key} ) ";
if ((memberInfo.Expression as MethodCallExpression).Method.Name == "Any") if ((memberInfo.Expression as MethodCallExpression).Method.Name == "Any")
{ {
@@ -146,7 +147,21 @@ namespace SqlSugar
return MapperSql; return MapperSql;
} }
#region Helper #region Helper
private string GetWhereSql1(string wheresql,string lastShortName, List<ExpressionItems> joinInfos,ISqlBuilder sqlBuilder)
{
var sql = wheresql;
if (sql == null) return sql;
joinInfos.Last().ThisEntityInfo.Columns.ForEach(it =>
{
this.whereSql = this.whereSql.Replace(sqlBuilder.GetTranslationColumnName(it.DbColumnName),
lastShortName+"." + sqlBuilder.GetTranslationColumnName(it.DbColumnName));
});
return sql;
}
private string GetWhereSql(MethodCallExpression memberExp) private string GetWhereSql(MethodCallExpression memberExp)
{ {
var whereExp = memberExp.Arguments[1]; var whereExp = memberExp.Arguments[1];