/// <summary> /// 静态构造方法,初始化链接池管理对象 /// </summary> /// <param name="dbConfigSelectionKey">连接池对象的Key</param> /// <param name="_mongoConfig">MongoDB连接对象</param> protected IMongoDatabase ShareMongoDb(string dbConfigSelectionKey, MongoConfig _mongoConfig) { if (!dbDic.ContainsKey(dbConfigSelectionKey)) { lock (lockObj) { if (!dbDic.ContainsKey(dbConfigSelectionKey) && _mongoConfig != null) { var logSetting = new MongoClientSettings { Server = new MongoServerAddress(_mongoConfig.ServerConStr, _mongoConfig.ServerPort), MaxConnectionPoolSize = _mongoConfig.MaxConnectionPoolSize, MaxConnectionIdleTime = TimeSpan.FromSeconds(_mongoConfig.MaxConnectionIdleTime), MaxConnectionLifeTime = TimeSpan.FromSeconds(_mongoConfig.MaxConnectionLifeTime), ConnectTimeout = TimeSpan.FromSeconds(_mongoConfig.ConnectTimeout), WaitQueueSize = _mongoConfig.WaitQueueSize, SocketTimeout = TimeSpan.FromSeconds(_mongoConfig.SocketTimeout), WaitQueueTimeout = TimeSpan.FromSeconds(_mongoConfig.WaitQueueTimeout) }; if (!string.IsNullOrEmpty(_mongoConfig.UserName) && !string.IsNullOrEmpty(_mongoConfig.PassWord))//设置MongoDb用户密码 { string authDB = _mongoConfig.AuthDb; if (string.IsNullOrEmpty(authDB)) { authDB = _mongoConfig.DefaultDb; } MongoCredential mongoCredential = MongoCredential.CreateCredential(authDB, _mongoConfig.UserName, _mongoConfig.PassWord); List <MongoCredential> mongoCredentialList = new List <MongoCredential>(); mongoCredentialList.Add(mongoCredential); logSetting.Credentials = mongoCredentialList; } var logClient = new MongoClient(logSetting); IMongoDatabase db = logClient.GetDatabase(_mongoConfig.DefaultDb); dbDic.Add(dbConfigSelectionKey, db); } } } return(dbDic[dbConfigSelectionKey]); }
/// <summary> /// 创建Mongo仓储对象 /// </summary> /// <param name="dbSelectionKey">仓储键名</param> /// <param name="collectionName">表名</param> /// <param name="mongoConfig">MongoDB服务器配置类</param> public DoMongoRepostory(string dbSelectionKey, string collectionName, MongoConfig mongoConfig) { this.Collection = ShareMongoDb(dbSelectionKey, mongoConfig).GetCollection <TAggregate>(collectionName); }