У нас есть пользовательский сериализатор для перечисления (измерение Valuetype), который хранит перечисление как строку в mongodb и пустывает его из строки обратно в перечисление при запросе.
enum измерение. Если это не так, то все работает, как и ожидалось.
Код: Выделить всё
public class TestA
{
public MeasurementValueType ValueType { get; set; }
}
public enum MeasurementValueType : ushort
{
Distance = 1,
Angle = 2
}
Код: Выделить всё
public class MeasurementValueTypeSerializer : StructSerializerBase
{
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, MeasurementValueType value)
{
BsonSerializer.Serialize(context.Writer, value.ToString());
}
public override MeasurementValueType Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
var measurementValueType = (MeasurementValueType)Enum.Parse(
args.NominalType,
BsonSerializer.Deserialize(context.Reader)
);
return measurementValueType;
}
}
< /code>
зарегистрировано в запуске: < /p>
BsonSerializer.RegisterSerializer(typeof(MeasurementValueType), new MeasurementValueTypeSerializer());
При сохранении документа Valuetype должен храниться в качестве строки в Mongodb. При вставке объекта называется сериализатор, а перечисление сохраняется как строка. При получении его обратно в целом документе называется Deserializer.
Код: Выделить всё
database.TestACollection.Insert(new TestA { ValueType = MeasurementValueType.Angle });
var match = database.TestACollection
.AsQueryable()
.Single(x => x.ValueType == MeasurementValueType.Angle);
Код: Выделить всё
MeasurementValueType.Angle
Подробнее здесь: https://stackoverflow.com/questions/795 ... inq-provid