public override string ToString() { var sb = new StringBuilder(); sb.Append("SELECT "); var firstColumn = true; foreach (var column in SelectedColumns) { if (!firstColumn) { sb.Append(", "); } firstColumn = false; sb.Append(column); } sb.AppendLine(); sb.Append("FROM ").Append($"[{RootTableName}] AS ").Append($"[{RootTableAlias}]").AppendLine(); foreach (var join in Joins) { sb.AppendLine(join.ToString()); } var expComp = new ExpressionQueryBuilder <T>(m_owner); var where = expComp.Map(Where); where.Render(sb); sb.AppendLine(); ResultOrderingModel.Render <T>(OrderBy, sb); if (Skip != null) { sb.AppendLine($"OFFSET {Skip} ROWS"); } if (Take != null) { sb.AppendLine($"FETCH NEXT {Take} ROWS ONLY"); } return(sb.ToString()); }
public static string Render <T>(IQueryModel <T> query, IQueryBuilder <T> queryBuilder) where T : class { var sb = new StringBuilder(); var takeRendered = false; sb.Append("SELECT "); if ((query.Skip == null) && (query.Take != null)) { sb.Append($"TOP {query.Take} "); takeRendered = true; } var firstColumn = true; foreach (var column in query.SelectedColumns) { if (!firstColumn) { sb.Append(", "); } firstColumn = false; sb.Append(column); } sb.AppendLine(); sb.Append("FROM ").Append($"[{query.RootTableName}] AS ").Append($"[{query.RootTableAlias}]").AppendLine(); foreach (var join in query.Joins) { sb.AppendLine(join.ToString()); } var expComp = new ExpressionQueryBuilder <T>(queryBuilder); var where = expComp.Map(query.Where); where.Render(sb); sb.AppendLine(); ResultOrderingModel.Render <T>(query.OrderBy, sb); if (!takeRendered) { if (query.Skip != null) { sb.AppendLine($"OFFSET {query.Skip} ROWS"); } if (query.Take != null) { sb.AppendLine($"FETCH NEXT {query.Take} ROWS ONLY"); } } return(sb.ToString()); }