-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
None
-
Dotnet Drivers
-
Not Needed
-
None
-
None
-
None
-
None
-
None
-
None
Summary
The MongoDB .NET driver ignores globally registered GUID serialization settings when serializing properties of type object.
This leads to an exception during serialization:
MongoDB.Bson.BsonSerializationException : An error occurred while serializing the Value property of class MongoCases.MongoCases_Linq3_Guid+ParameterDbo: GuidSerializer cannot serialize a Guid when GuidRepresentation is Unspecified. ----> MongoDB.Bson.BsonSerializationException : GuidSerializer cannot serialize a Guid when GuidRepresentation is Unspecified. at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeMember(BsonSerializationContext context, Object obj, BsonMemberMap memberMap) at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.SerializeClass(BsonSerializationContext context, BsonSerializationArgs args, TClass document) at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value) at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, Object value) at MongoDB.Bson.BsonExtensionMethods.ToBsonDocument(Object obj, Type nominalType, IBsonSerializer serializer, Action`1 configurator, BsonSerializationArgs args) at MongoDB.Bson.BsonExtensionMethods.ToBsonDocument[TNominalType](TNominalType obj, IBsonSerializer`1 serializer, Action`1 configurator, BsonSerializationArgs args)
<PackageReference Include="MongoDB.Bson" Version="3.5.2" /> <PackageReference Include="MongoDB.Driver" Version="3.5.2" />
How to Reproduce
using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Serializers; namespace MongoCases; [TestFixture] public class MongoCases_Linq3_Guid { [Test] public async Task Test() { BsonSerializer.TryRegisterSerializer(new GuidSerializer(GuidRepresentation.CSharpLegacy)); var parameterDbo = new ParameterDbo { Type = "UserId", Value = Guid.NewGuid() }; var bson = parameterDbo.ToBsonDocument(); // MongoDB.Bson.BsonSerializationException : An error occurred while serializing the Value property of class // MongoCases.MongoCases_Linq3_Guid+ParameterDbo: GuidSerializer cannot serialize a Guid when GuidRepresentation is Unspecified. Assert.That(bson, Is.Not.Null); } class ParameterDbo { [BsonId] public ObjectId Id { get; set; } [BsonElement("type")] public string Type { get; set; } [BsonElement("value")] public object Value { get; set; } } }