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);
}
}