public static Sql Where <T>(this Sql sql, Expression <Func <T, bool> > predicate) { var expresionist = new PocoToSqlExpressionHelper <T>(); string whereExpression = expresionist.Visit(predicate); return(sql.Where(whereExpression)); }
public static Sql Where <T>(this Sql sql, Expression <Func <T, bool> > predicate) { var expresionist = new PocoToSqlExpressionHelper <T>(); var whereExpression = expresionist.Visit(predicate); return(sql.Where(whereExpression, expresionist.GetSqlParameters())); }
public static Sql WhereIn <T>(this Sql sql, Expression <Func <T, object> > fieldSelector, IEnumerable values) { var expresionist = new PocoToSqlExpressionHelper <T>(); var fieldExpression = expresionist.Visit(fieldSelector); return(sql.Where(fieldExpression + " IN (@values)", new { @values = values })); }
public void Poco_Expression_Value_Does_Not_Get_Double_Escaped() { //mysql escapes backslashes, so we'll test with that SqlSyntaxContext.SqlSyntaxProvider = new MySqlSyntaxProvider(Mock.Of <ILogger>()); Expression <Func <UserDto, bool> > predicate = user => user.Login.StartsWith("mydomain\\myuser"); var modelToSqlExpressionHelper = new PocoToSqlExpressionHelper <UserDto>(); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Poco to Sql ExpressionHelper: \n" + result); Assert.AreEqual("upper(`umbracoUser`.`userLogin`) LIKE upper(@0)", result); Assert.AreEqual("mydomain\\myuser%", modelToSqlExpressionHelper.GetSqlParameters()[0]); }