public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList<SqlExpression> arguments, IDiagnosticsLogger<DbLoggerCategory.Query> logger)
		{
			if (!SupportedMethods.Contains(method))
				return null;

			return _fbSqlExpressionFactory.Convert(arguments[0], method.ReturnType);
		}
Esempio n. 2
0
        public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList <SqlExpression> arguments)
        {
            if (!SupportedMethods.Contains(method))
            {
                return(null);
            }

            return(_fbSqlExpressionFactory.Convert(arguments[0], method.ReturnType));
        }
Esempio n. 3
0
        public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList <SqlExpression> arguments, IDiagnosticsLogger <DbLoggerCategory.Query> logger)
        {
            if (!SupportedMethods.Contains(method))
            {
                return(null);
            }

            return(_fbSqlExpressionFactory.ApplyDefaultTypeMapping(
                       _fbSqlExpressionFactory.Convert(_fbSqlExpressionFactory.ApplyDefaultTypeMapping(arguments[0]), method.ReturnType)));
        }
Esempio n. 4
0
 public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList <SqlExpression> arguments)
 {
     if (method.Name == nameof(ToString) && method.GetParameters().Length == 0)
     {
         var type = instance.Type.UnwrapNullableType();
         if (SupportedTypes.Contains(type))
         {
             return(_fbSqlExpressionFactory.Convert(instance, typeof(string)));
         }
         else if (type == typeof(Guid))
         {
             return(_fbSqlExpressionFactory.Function("UUID_TO_CHAR", new[] { instance }, typeof(string)));
         }
     }
     return(null);
 }
        public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList <SqlExpression> arguments, IDiagnosticsLogger <DbLoggerCategory.Query> logger)
        {
            if (method.IsGenericMethod &&
                method.GetGenericMethodDefinition().Equals(EnumerableMethods.Contains) &&
                arguments[0].Type == typeof(byte[]))
            {
                var value = arguments[1] is SqlConstantExpression constantValue
                                        ? _fbSqlExpressionFactory.Function("ASCII_CHAR", new[] { _fbSqlExpressionFactory.Constant((byte)constantValue.Value) }, false, new[] { false }, typeof(string))
                                        : _fbSqlExpressionFactory.Function("ASCII_CHAR", new[] { _fbSqlExpressionFactory.Convert(_fbSqlExpressionFactory.ApplyDefaultTypeMapping(arguments[1]), typeof(byte)) }, true, new[] { true }, typeof(string));

                return(_fbSqlExpressionFactory.GreaterThan(
                           _fbSqlExpressionFactory.Function(
                               "POSITION",
                               new[] { value, _fbSqlExpressionFactory.ApplyDefaultTypeMapping(arguments[0]) },
                               true,
                               new[] { true, true },
                               typeof(int)),
                           _fbSqlExpressionFactory.Constant(0)));
            }
            return(null);
        }