刚刚将我的应用程序升级到最新的稳定版 MongoDB C# 驱动程序 2.0。

在迁移过程中,基本功能被破坏,即使是最简单的查询,如:this.collection.Find(e => e.Id == id).SingleOrDefaultAsync() 也没有返回正确的数据。

检查了类映射和约定,但我想查看输出查询以正确识别问题。

那么,MongoClient端应该怎么做呢?

在数据库级别设置分析是可能的,但不是一个好的解决方案,因为我们有多个应用程序和开发人员使用该数据库。

我的应用程序目前在 UI、业务和 EF 数据访问中使用 Ninject.Extensions.Logginglog4net

最佳答案

对于较新的 C# MongoDB 驱动程序,API 已更改。您必须使用接受 MongoClientSettings 对象的更复杂的构造函数,而不是连接字符串。

使用以下代码继续使用连接字符串,但启用每个命令的日志记录:

var mongoConnectionUrl = new MongoUrl(connectionString);
var mongoClientSettings = MongoClientSettings.FromUrl(mongoConnectionUrl);
mongoClientSettings.ClusterConfigurator = cb => {
    cb.Subscribe<CommandStartedEvent>(e => {
        logger.Log($"{e.CommandName} - {e.Command.ToJson()}");
    });
};
var mongoCfgClient = new MongoClient(mongoClientSettings);

关于c# - 如何在 MongoDB C# Driver 2.0 中记录我的查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30333925/

10-13 04:18