Запрос Mongo Linq игнорирует индивидуальную сериализацию аргумента LINQ с использованием провайдера LINQ v3C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Запрос Mongo Linq игнорирует индивидуальную сериализацию аргумента LINQ с использованием провайдера LINQ v3

Сообщение Anonymous »

Проблема
У нас есть пользовательский сериализатор для перечисления (измерение Valuetype), который хранит перечисление как строку в mongodb и пустывает его из строки обратно в перечисление при запросе.
enum измерение. Если это не так, то все работает, как и ожидалось.

Код: Выделить всё

public class TestA
{
public MeasurementValueType ValueType { get; set; }
}

public enum MeasurementValueType : ushort
{
Distance = 1,
Angle = 2
}
Пользовательский сериализатор для измерения Valuetype :

Код: Выделить всё

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);
Это работало нормально в провайдере LINQ V2, но в провайдере LINQ V3 он больше не совпадает.

Код: Выделить всё

MeasurementValueType.Angle
) передан в сериализатор, чтобы его можно было преобразовать в строку перед выполнением запроса? В запросах LINQ?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... inq-provid
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»