public void Transform_TwoArguments() { var method = typeof(StringExtensions).GetMethod( "SqlContainsFulltext", BindingFlags.Public | BindingFlags.Static, null, CallingConventions.Any, new[] { typeof(string), typeof(string), typeof(string) }, null); var objectExpression = Expression.Constant("Test"); var argument1 = Expression.Constant("es"); var language = Expression.Constant("language"); var expression = Expression.Call(method, objectExpression, argument1, language); var transformer = new ContainsFulltextMethodCallTransformer(); var result = transformer.Transform(expression); var argumentExpression = Expression.Constant(string.Format("{0}", argument1.Value)); var compositeExpression = new SqlCompositeCustomTextGeneratorExpression( typeof(string), new SqlCustomTextExpression("LANGUAGE ", typeof(string)), language); var expectedResult = new SqlFunctionExpression(typeof(bool), "CONTAINS", objectExpression, argumentExpression, compositeExpression); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
public Expression Transform(MethodCallExpression methodCallExpression) { ArgumentUtility.CheckNotNull("methodCallExpression", methodCallExpression); if (methodCallExpression.Arguments.Count == 2) { return(new SqlFunctionExpression(typeof(bool), "FREETEXT", methodCallExpression.Arguments[0], methodCallExpression.Arguments[1])); } else if (methodCallExpression.Arguments.Count == 3) { MethodCallTransformerUtility.CheckConstantExpression( methodCallExpression.Method.Name, methodCallExpression.Arguments[2], "language parameter"); var compositeExpression = new SqlCompositeCustomTextGeneratorExpression( typeof(string), new SqlCustomTextExpression("LANGUAGE ", typeof(string)), methodCallExpression.Arguments[2]); return(new SqlFunctionExpression( typeof(bool), "FREETEXT", methodCallExpression.Arguments[0], methodCallExpression.Arguments[1], compositeExpression)); } else { var message = string.Format( "IndexOf function with {0} arguments is not supported. Expression: '{1}'", methodCallExpression.Arguments.Count, methodCallExpression); throw new NotSupportedException(message); } }
public Expression Transform(MethodCallExpression methodCallExpression) { MethodCallTransformerUtility.CheckArgumentCount(methodCallExpression, 2, 3); MethodCallTransformerUtility.CheckStaticMethod(methodCallExpression); if (methodCallExpression.Arguments.Count == 2) // overload without language { return(new SqlFunctionExpression(typeof(bool), "CONTAINS", methodCallExpression.Arguments[0], methodCallExpression.Arguments[1])); } else { MethodCallTransformerUtility.CheckConstantExpression(methodCallExpression.Method.Name, methodCallExpression.Arguments[2], "language parameter"); var compositeExpression = new SqlCompositeCustomTextGeneratorExpression( typeof(string), new SqlCustomTextExpression("LANGUAGE ", typeof(string)), methodCallExpression.Arguments[2]); return(new SqlFunctionExpression( typeof(bool), "CONTAINS", methodCallExpression.Arguments[0], methodCallExpression.Arguments[1], compositeExpression)); } }
public void SetUp() { _expression1 = Expression.Constant("5"); _expression2 = Expression.Constant("1"); _sqlCompositeCustomTextGeneratorExpression = new SqlCompositeCustomTextGeneratorExpression(typeof(Cook), _expression1, _expression2); }