public void ItShouldBePossibleToHaveMultipleConditionsOnTheUpdate() { var stream = S.UpdateNode( S.UpdHead <Person>(S.Ust <Person>("Age", 42)), S.Where( S.BinExp(S.Col <Person>("Name"), BinaryOperation.Equal, S.Const("'Kalle'")), S.Or(S.BinExp(S.Col <Person>("Name"), BinaryOperation.Equal, S.Const("'Pelle'"))), S.And(S.BinExp(S.Col <Person>("Age"), BinaryOperation.LessThan, S.Const(18))))); var result = SqlGen.SqlifyExpression(AnsiSql.Dialect, stream); Assert.That(result, Is.EqualTo("UPDATE Person SET Age = 42 WHERE Name = 'Kalle' OR Name = 'Pelle' AND Age < 18")); }
public void ItShouldBePossibleToSqlifyAWhereWithAndOrsThatIsNotInBinaryExpressions() { var stream = S.SelectNode( S.Select(S.Star <Person>()), S.From <Person>(), S.Where( S.BinExp(S.Col <Person>("Age"), BinaryOperation.LessThan, S.Const(42)), S.And(S.BinExp(S.Col <Person>("Age"), BinaryOperation.GreaterThan, S.Const(12))), S.Or(S.BinExp(S.Col <Person>("Name"), BinaryOperation.Equal, S.Const("'Karl'"))))); var result = SqlGen.SqlifyExpression(AnsiSql.Dialect, stream); Assert.That(result, Is.EqualTo(@"SELECT PersonRef.* FROM Person PersonRef WHERE PersonRef.Age < 42 AND PersonRef.Age > 12 OR PersonRef.Name = 'Karl'")); }
public void ItShouldBePossibleToUseAndAndOrOnAWhereStatementOnADeleteStatement() { var stream = S.DeleteNode( S.From <Person>(), S.Where( S.BinExp(S.Col <Person>("Age"), BinaryOperation.GreaterThan, S.Const(42)), S.And(S.BinExp(S.Col <Person>("Name"), BinaryOperation.Equal, S.Const("'Kalle'"))), S.Or(S.BinExp(S.Col <Person>("Name"), BinaryOperation.Equal, S.Const("'Henrik'"))))); var result = SqlGen.SqlifyExpression(AnsiSql.Dialect, stream); Assert.That(result, Is.EqualTo( "DELETE FROM Person PersonRef " + "WHERE PersonRef.Age > 42 " + "AND PersonRef.Name = 'Kalle' " + "OR PersonRef.Name = 'Henrik'")); }
public void ItShouldBePossibleToUseTheParameterInMoreComplexExpressions() { var stream = S.SelectNode( S.Select(S.Star<Person>()), S.From<Person>(), S.Where( S.BinExp( S.BinExp(S.Col<Person>("Age"), BinaryOperation.GreaterThan, S.Param("age")), BinaryOperation.And, S.BinExp(S.Param("age"), BinaryOperation.LessThan, S.Const(90)) ), S.Or(S.BinExp(S.Col<Person>("Age"), BinaryOperation.LessThan, S.Param("age"))) )); var result = SqlGen.SqlifyExpression(AnsiSql.Dialect, stream); Assert.That(result, Is.EqualTo( @"SELECT PersonRef.* " + "FROM Person PersonRef " + "WHERE PersonRef.Age > @age "+ "AND @age < 90 " + "OR PersonRef.Age < @age")); }