/// <summary> /// Convierte un <see cref="IFromListItemTarget"/> a string, devuelve true si el elemento requiered de un alias /// </summary> static StatementToStrResult FromListTargetToStr(IFromListItemTarget item, ParamMode paramMode, SqlParamDic paramDic) { if (item is ISqlQuery query) { return(QueryToStr(query, paramMode, paramDic)); } else if (item is SqlTable table) { return(new TableToStrResult(TableToString(table))); } else if (item is ISqlTableRefRaw raw) { return(new TableToStrResult(raw.Raw)); } throw new ArgumentException("El from item target debe de ser una tabla o un select"); }
public void SelectSoloFrom() { IFromListItemTarget r = Sql .From(new SqlTable <Cliente>()) ; var actual = r.ToSql().Sql; var expected = @" SELECT ""x"".* FROM ""Cliente"" ""x"" "; AssertSql.AreEqual(expected, actual); }
public void SelectSoloFromWhere() { IFromListItemTarget r = Sql .From(new SqlTable <Cliente>()) .Where(x => x.IdRegistro == 10) ; var actual = r.ToSql().Sql; var expected = @" SELECT ""x"".* FROM ""Cliente"" ""x"" WHERE (""x"".""IdRegistro"" = 10) "; AssertSql.AreEqual(expected, actual); }
public SqlFrom(IFromListItemTarget <T> target) { Target = target; }
public ISqlSelect <Cliente> QueryClientes(IFromListItemTarget <Cliente> clientes) { return(Sql.From(clientes).Select(x => x)); }
internal static JoinItems <TL, TR> InternalJoin <TL, TR>(this IBaseLeftJoinAble <TL> left, IFromListItemTarget <TR> right) { var dummyP0 = Expression.Parameter(typeof(TL)); var r = Expression.Lambda <Func <TL, IFromListItemTarget <TR> > >(Expression.Constant(right), dummyP0); return(new JoinItems <TL, TR>(left.Type, false, left.Left, r)); }
/// <summary> /// Aplica un JOIN que no es LATERAL /// </summary> public static INextJoinOnAble <TL, TR> Join <TL, TR>(this INextJoinLateralAble <TL> left, IFromListItemTarget <TR> right) => left.InternalJoin(right);
/// <summary> /// Inicia un query con un FROM dado el destino del from /// </summary> /// <param name="from">Destino del FROM, puede ser un <see cref="SqlTable"/> o un subquery </param> public static ISqlFirstJoinAble <T1, T1, object> From <T1>(IFromListItemTarget <T1> from) => new SqlSelectBuilder <T1, T1, object>(SelectClause.InitFromItem <T1>(new SqlFrom <T1>(from)));