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, FormattingExpressionTreeVisitor.Format (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); }