我目前正在尝试将我的 mongocsharpdriver 包从 1.5 版本更新到 1.8.3。但是,我的自定义 IdGenerator 已停止使用升级。
我正在使用(使用 StructureMap)为所有 int 类型的 Id 注册我的 id 生成器的代码是:
For<MongoServer>()
.Singleton()
.Use(c =>
{
var server = MongoServer.Create(mongodbConnectionString);
SequenceNumberRepository sequenceNumberRepository = new SequenceNumberRepository(server.GetDatabase("seq").GetCollection<Sequence>("seq"));
IntegerIdGenerator integerIdGenerator = new IntegerIdGenerator(sequenceNumberRepository);
// tell the BSON Serializer to use this generator when creating new integer ids
BsonSerializer.RegisterIdGenerator(typeof(int), integerIdGenerator);
return server;
});
以上在 mongocsharpdriver 1.5 上已经运行了好几个月。今天我尝试将我们的 nuget 包更新到 1.8.3,我现在只得到 0 的任何新项目的 ID。
我在 IdGenerator 的 GenerateId 和 IsEmpty 函数中放置了一些断点以查看发生了什么,但甚至没有调用这些函数(使用正确的参数调用 IdGenerator 的构造函数,而不是在插入项目时调用实际函数到数据库)。
我在http://docs.mongodb.org/ecosystem/tutorial/serialize-documents-with-the-csharp-driver/上查找了有关如何注册 IdGenerator 的文档。关于如何为类型注册 IdGenerator 似乎没有任何差异。
任何帮助表示赞赏