복붙노트

[MONGODB] 2.0 드라이버 MongoServer.State 동등한

MONGODB

2.0 드라이버 MongoServer.State 동등한

기존의 API (1.X)에서는 서버가 MongoClient.GetServer에서 반환 된 MongoServer 인스턴스에 주 속성을 사용하여 연결 여부되었는지 여부를 알 수 있습니다 :

public bool IsConnceted
{
    get
    {
        return _client.GetServer().State == MongoServerState.Connected;
    }
}

그러나 GetServer는 새로운 API (2.0)의 일부가 아닙니다. 그 어떻게 달성 할 수 있습니까?

해결법

  1. ==============================

    1.그렇게 할 수있는 더 적절한 방법은 서버가 아니라 클러스터 (다중 서버를 포함 할 수 있음)하고 MongoClient 인스턴스에서 직접 액세스 할 수 있습니다를 확인하여되지 않습니다 :

    그렇게 할 수있는 더 적절한 방법은 서버가 아니라 클러스터 (다중 서버를 포함 할 수 있음)하고 MongoClient 인스턴스에서 직접 액세스 할 수 있습니다를 확인하여되지 않습니다 :

    public bool IsClusterConnceted
    {
        get
        {
            return _client.Cluster.Description.State == ClusterState.Connected;
        }
    }
    

    특정 서버를 확인하려는 경우 그 수도 있습니다 :

    public bool IsServerConnceted
    {
        get
        {
            return _client.Cluster.Description.Servers.Single().State == ServerState.Connected;
        }
    }
    

    그것은 현재하지 않을 수 있도록 값이 마지막 작업으로 업데이트됩니다 있음을 유의하십시오. 실제로 할 수있는 유일한 방법은 확실히 올바른 연결 동작의 일종을 실행하기 위해이되어있어합니다.

  2. ==============================

    2.i3arnon에서 언급 한 바와 같이, 하나는 상태가 제대로 업데이트되기 전에 데이터베이스에 작업의 일종을 수행 할 수 있습니다.

    i3arnon에서 언급 한 바와 같이, 하나는 상태가 제대로 업데이트되기 전에 데이터베이스에 작업의 일종을 수행 할 수 있습니다.

    데이터베이스를 열거하는 행위는 상태를 업데이트하기에 충분하다.

    이것은 나를 위해 일한 :

    var databases = _client.ListDatabasesAsync().Result;
    databases.MoveNextAsync(); // Force MongoDB to connect to the database.
    
    if (_client.Cluster.Description.State == ClusterState.Connected)
    {
        // Database is connected.
    }
    
  3. from https://stackoverflow.com/questions/29459990/mongoserver-state-equivalent-in-the-2-0-driver by cc-by-sa and MIT license