If you have two or more databases, you can get an initialization issue because this part of DB.Initialize is called multiple times:
if (!isSetupDone)
{
BsonSerializer.RegisterSerializer(new DateSerializer());
BsonSerializer.RegisterSerializer(new FuzzyStringSerializer());
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));
ConventionRegistry.Register(
"IgnoreExtraElements",
new ConventionPack { new IgnoreExtraElementsConvention(true) },
type => true);
ConventionRegistry.Register(
"IgnoreManyProperties",
new ConventionPack { new IgnoreManyPropertiesConvention() },
type => true);
isSetupDone = true;
}
I think you should move this section out of here, remove the boolean isSetupDone, and instead place it in DB static constructor.
Message:
MongoDB.Bson.BsonSerializationException : There is already a serializer registered for type Date.
Stack Trace:
BsonSerializerRegistry.RegisterSerializer(Type type, IBsonSerializer serializer)
BsonSerializer.RegisterSerializer(Type type, IBsonSerializer serializer)
BsonSerializer.RegisterSerializer[T](IBsonSerializer`1 serializer)
DB.Initialize(MongoClientSettings settings, String db)
DB.ctor(MongoClientSettings settings, String database)