C# 如何使用MongoDB在Rebus中保存传奇

C# 如何使用MongoDB在Rebus中保存传奇,c#,mongodb,rebus,C#,Mongodb,Rebus,我正在配置一个总线,我需要配置Rebus持久化sagas的方式。我将使用官方的C#Mongo驱动程序版本1.10在MongoDB中保存传说,因此我编写了如下内容: return Rebus.Config.Configure.With(new CastleWindsorContainerAdapter(container)) .Sagas(s => s.StoreInMongoDb()) ... 其中,StoreInMongoDB是一种扩展方法: // // Summary

我正在配置一个总线,我需要配置Rebus持久化sagas的方式。我将使用官方的C#Mongo驱动程序版本1.10在MongoDB中保存传说,因此我编写了如下内容:

return Rebus.Config.Configure.With(new CastleWindsorContainerAdapter(container))
    .Sagas(s => s.StoreInMongoDb())
    ...
其中,
StoreInMongoDB
是一种扩展方法:

//
// Summary:
//     Configures Rebus to use MongoDB to store sagas, using the specified collection
//     name resolver function. If the collection name resolver is omitted, collection
//     names will be determined by using the Name property of the saga data's System.Type
public static void StoreInMongoDb(this StandardConfigurer<Rebus.Sagas.ISagaStorage> configurer, MongoDB.Driver.IMongoDatabase mongoDatabase, Func<Type, string> collectionNameResolver = null);
//
//总结:
//将Rebus配置为使用指定集合使用MongoDB存储sagas
//名称解析器函数。如果省略了集合名称解析程序,则
//名称将通过使用saga数据的System.Type的Name属性来确定
MongoDB中的公共静态无效存储(此标准配置器配置器,MongoDB.Driver.IMongoDatabase mongoDatabase mongoDatabase,Func collectionNameResolver=null);

问题是:既然
MongoDatabase
没有实现
IMongoDatabase
我该如何处理这种情况?

Rebus已经更新为使用v。官方MongoDB驱动程序中的2个

这样做是为了利用它的能力来执行适当的C#
异步
/
等待
支持的异步I/O

我担心目前没有对旧的MongoDB驱动程序(1.10及更早版本)的支持,尽管您可能能够从REBS历史中找到它,因为您确实需要它


不过,我建议您看看是否可以使用新的驱动程序,可能在不同的地方编写一些您自己的扩展方法,以补充新版本提供的相当粗糙的API。

是的,我尝试过这种方式,但看起来Rebus.MongoDb(0.99,即最新的稳定版本)与mongocsharpdriver兼容(>=1.10.0&&<2.0.0)。糟糕!!抱歉!-S我在某个时候接受了一个PR,它将Rebus.MongoDb升级为使用驱动程序版本2,但是.nuspec没有相应地编辑!现在已经修复,将在几分钟后于0.99.29发布…感谢您提醒我这一点!:)完美,如果只支持遗留的MongocDriver将是完美的,但不要担心。我清楚地理解:D