public Expression VisitMySqlMatch(MySqlMatchExpression mySqlMatchExpression)
        {
            Check.NotNull(mySqlMatchExpression, nameof(mySqlMatchExpression));

            Sql.Append("MATCH ");
            Sql.Append("(");
            Visit(mySqlMatchExpression.Match);
            Sql.Append(")");
            Sql.Append(" AGAINST ");
            Sql.Append($"(");
            Visit(mySqlMatchExpression.Against);

            switch (mySqlMatchExpression.SearchMode)
            {
            case MySqlMatchSearchMode.NaturalLanguage:
                break;

            case MySqlMatchSearchMode.NaturalLanguageWithQueryExpansion:
                Sql.Append(" WITH QUERY EXPANSION");
                break;

            case MySqlMatchSearchMode.Boolean:
                Sql.Append(" IN BOOLEAN MODE");
                break;
            }

            Sql.Append(")");

            return(mySqlMatchExpression);
        }
コード例 #2
0
        private SqlExpression ApplyTypeMappingOnMatch(MySqlMatchExpression matchExpression)
        {
            var inferredTypeMapping = ExpressionExtensions.InferTypeMapping(matchExpression.Match)
                                      ?? _typeMappingSource.FindMapping(matchExpression.Match.Type);

            return(new MySqlMatchExpression(
                       ApplyTypeMapping(matchExpression.Match, inferredTypeMapping),
                       ApplyTypeMapping(matchExpression.Against, inferredTypeMapping),
                       matchExpression.SearchMode,
                       _boolTypeMapping));
        }
 private SqlExpression ApplyNewTypeMapping(SqlExpression sqlExpression, RelationalTypeMapping typeMapping)
 {
     return(sqlExpression switch
     {
         MySqlComplexFunctionArgumentExpression e => ApplyTypeMappingOnComplexFunctionArgument(e),
         MySqlCollateExpression e => ApplyTypeMappingOnCollate(e),
         MySqlRegexpExpression e => ApplyTypeMappingOnRegexp(e),
         MySqlBinaryExpression e => ApplyTypeMappingOnMySqlBinary(e, typeMapping),
         MySqlMatchExpression e => ApplyTypeMappingOnMatch(e),
         MySqlJsonArrayIndexExpression e => e.ApplyTypeMapping(typeMapping),
         _ => base.ApplyTypeMapping(sqlExpression, typeMapping)
     });