Search code examples
exceptiondatabase-connectionmongodb-.net-driver

Mongo Connection Exception handling


I am trying to make some exception handling on the following code. Basically I want a MessageBox.Show("ErrorMessage") to show if the connection to the server can't be established.

public List<MongoDBModel> MongoDBModel
        {
            get
            {
                string connectionString = "mongodb://127.0.0.1";
                var mongoClient = new MongoClient(connectionString);
                var mongoServer = mongoClient.GetServer();
                var databaseName = "TestPointToPoint";
                var db = mongoServer.GetDatabase(databaseName);
                var mongodb = db.GetCollection<MongoDBModel>("OCS.MeterEntity");
                var mongodbQuery = Query<MongoDBModel>.EQ(x => x._id, MeterUID);
                List<MongoDBModel> Cursor = mongodb.FindAs<MongoDBModel>(mongodbQuery).ToList();
                return Cursor;

            }
        }

I have already tryed with

    if (mongoServer.State == MongoServerState.Connected)
    {
              var databaseName = "TestPointToPoint";
              var db = mongoServer.GetDatabase(databaseName);
              var mongodb = db.GetCollection<MongoDBModel>("OCS.MeterEntity");
              var mongodbQuery = Query<MongoDBModel>.EQ(x => x._id, MeterUID);
              List<MongoDBModel> Cursor = mongodb.FindAs<MongoDBModel>(mongodbQuery).ToList();
              return Cursor;
    }
    else
    {
              MessageBox.Show("Connection to MongoDB lost");
              return null;
    }

but that did not work since the state of the mongoServer first changes to connected in the query.

What should I do to make it work?


Solution

  • I feel stupid now :P Using a simple try-catch worked.

    public List<MongoDBModel> MongoDBModel
        {
            get
            {
                string connectionString = "mongodb://127.0.0.1";
                var mongoClient = new MongoClient(connectionString);
                var mongoServer = mongoClient.GetServer();
                var databaseName = "TestPointToPoint";
                var db = mongoServer.GetDatabase(databaseName);
                var mongodb = db.GetCollection<MongoDBModel>("OCS.MeterEntity");
                try
                {
                    var mongodbQuery = Query<MongoDBModel>.EQ(x => x._id, MeterUID);
                    List<MongoDBModel> Cursor = mongodb.FindAs<MongoDBModel>(mongodbQuery).ToList();
                    return Cursor;
                }
                catch (MongoConnectionException e)
                {
                    MessageBox.Show(e.Message);
                    return null;
                }
            }
        }
    

    Sorry for your troubles.