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); }
public SqlExpression Translate(SqlExpression instance, MethodInfo method, IReadOnlyList <SqlExpression> arguments) { if (!SupportedMethods.Contains(method)) { return(null); } return(_fbSqlExpressionFactory.Convert(arguments[0], method.ReturnType)); }
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))); }
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); }