MongoServer.State 相当于 2.0 驱动程序
MongoServer.State equivalent in the 2.0 driver
在旧的 API (1.X) 中,您可以使用 MongoServer
上的 State
属性 判断服务器是否已连接从 MongoClient.GetServer
:
返回的实例
public bool IsConnceted
{
get
{
return _client.GetServer().State == MongoServerState.Connected;
}
}
但是 GetServer
不是新 API (2.0) 的一部分。如何实现?
更合适的方法不是检查服务器,而是检查集群(可能包含多个服务器),您可以直接从 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;
}
}
请记住,该值是由上次操作更新的,因此它可能不是最新的。真正确保存在有效连接的唯一方法是执行某种操作。
如 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.
}
在旧的 API (1.X) 中,您可以使用 MongoServer
上的 State
属性 判断服务器是否已连接从 MongoClient.GetServer
:
public bool IsConnceted
{
get
{
return _client.GetServer().State == MongoServerState.Connected;
}
}
但是 GetServer
不是新 API (2.0) 的一部分。如何实现?
更合适的方法不是检查服务器,而是检查集群(可能包含多个服务器),您可以直接从 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;
}
}
请记住,该值是由上次操作更新的,因此它可能不是最新的。真正确保存在有效连接的唯一方法是执行某种操作。
如 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.
}