Just upgraded my application to the latest stable MongoDB C# Driver 2.0.
During the migration, basic functionality has been broken and even the simplest query like: this.collection.Find(e => e.Id == id).SingleOrDefaultAsync()
doesn't return the correct data.
Checked the class mappings and conventions but I would like to see the output query in order to properly identify the issue.
So, how should it be done on the MongoClient
side?
Setting profiling on the database level is possible but not a good solution since we have several applications and developers using the database.
My application is currently using Ninject.Extensions.Logging
and log4net
in the UI, business and EF data access.
For newer C# MongoDB drivers the API has changed. You have to use the more complex constructor that accepts a MongoClientSettings
object, instead of the connection string.
Use the following code to keep using a connection string, but enable the logging of each command:
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);