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

Enum can't be deserialized when using Linq

    • Type: Icon: Bug Bug
    • Resolution: Won't Fix
    • Priority: Icon: Critical - P2 Critical - P2
    • None
    • Affects Version/s: 1.8.1
    • Component/s: None
    • Labels:
    • Environment:
      .net 4.5 Windows Ubuntu 12.04

      So I have this enum

          public enum JobStatus
          {
              Created = 0,
              Assigning = 1,
              Assigned = 2,
              Started = 3,
              Finished = 4
          }
      

      In this interface

          public interface IJob
          {
              Guid Id { get; set; }
              JobStatus Status { get; set; }
              bool IsFaulted { get; set; }
              string ErrorMessage { get; set; }
          }
      

      I plop one of these guys in the database, and it goes fine. Then when I try and grab one with this code

          Database.GetCollection<IJob>("Jobs").AsQueryable().FirstOrDefault(x=>x.Status == JobStatus.Created);
      

      That throws an exception

      Unable to determine the serialization information for the expression: jobs.Status.
         at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.GetSerializationInfo(Expression node, Dictionary`2 serializationInfoCache)
         at MongoDB.Driver.Linq.Utils.BsonSerializationInfoHelper.GetSerializationInfo(Expression node)
         at MongoDB.Driver.Linq.PredicateTranslator.BuildComparisonQuery(Expression variableExpression, ExpressionType operatorType, ConstantExpression constantExpression)
         at MongoDB.Driver.Linq.PredicateTranslator.BuildComparisonQuery(BinaryExpression binaryExpression)
         at MongoDB.Driver.Linq.PredicateTranslator.BuildQuery(Expression expression)
         at MongoDB.Driver.Linq.SelectQuery.BuildQuery()
         at MongoDB.Driver.Linq.SelectQuery.Execute()
         at MongoDB.Driver.Linq.MongoQueryProvider.Execute(Expression expression)
         at MongoDB.Driver.Linq.MongoQueryProvider.Execute[TResult](Expression expression)
         at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
      

      My first go I didn't have the enums assigned to integers, and that produced the same result. I'm seeing this on two different machines, and two fresh installs of MongoDb, one on windows and one on Ubuntu 12.04.

            Assignee:
            sridhar Sridhar Nanjundeswaran
            Reporter:
            kelton5020 kelly elton
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: