Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-3702

Expression.Not not supported for null value in expression parameter

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Works as Designed
    • Icon: Unknown Unknown
    • None
    • None
    • None
    • None

    Description

      We have expression for find recodrs:

       

      Expression<Func<Customer, bool>> SourceExpression => customer => customer.PhoneNumber == null; 
      

      Also we have function for negation expressions

       

       

      Expression<Func<T, bool>> NegationExpression =>
          System.Linq.Expressions.Expression.Lambda<Func<T, bool>>(
              System.Linq.Expressions.Expression.Not(SourceExpression.Body), SourceExpression.Parameters)
      

       

      In method Find after applying  NegationExpression for  Source Expression driver throw next exception:

       

      System.InvalidOperationException: x.PhoneNumber is not supported.System.InvalidOperationException
      x.PhoneNumber is not supported.
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.GetFieldExpression(Expression expression)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateComparison(Expression variableExpression, ExpressionType operatorType, ConstantExpression constantExpression)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateComparison(BinaryExpression binaryExpression)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.TranslateNot(UnaryExpression unaryExpression)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate(Expression node, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Driver.Linq.Translators.PredicateTranslator.Translate[TDocument](Expression`1 predicate, IBsonSerializer`1 parameterSerializer, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Driver.ExpressionFilterDefinition`1.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
         at MongoDB.Driver.MongoCollectionImpl`1.CreateFindOperation[TProjection](FilterDefinition`1 filter, FindOptions`2 options)
         at MongoDB.Driver.MongoCollectionImpl`1.FindAsync[TProjection](IClientSessionHandle session, FilterDefinition`1 filter, FindOptions`2 options, CancellationToken cancellationToken)
         at MongoDB.Driver.MongoCollectionImpl`1.<>c__DisplayClass47_0`1.<FindAsync>b__0(IClientSessionHandle session)
         at MongoDB.Driver.MongoCollectionImpl`1.UsingImplicitSessionAsync[TResult](Func`2 funcAsync, CancellationToken cancellationToken)
         at MongoDB.Driver.IAsyncCursorSourceExtensions.ToListAsync[TDocument](IAsyncCursorSource`1 source, CancellationToken cancellationToken)
      

       

       

      Attachments

        Activity

          People

            boris.dogadov@mongodb.com Boris Dogadov
            antonsuhorukov94@gmail.com Антон Сухоруков
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: