0

我目前正在尝试将我的 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 似乎没有任何差异。

任何帮助表示赞赏

4

0 回答 0