コード例 #1
0
 public Repository(MongoDbConfiger configer)
 {
     BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;
     ConventionRegistry.Register("IgnoreExtraElements",
                                 new ConventionPack {
         new IgnoreExtraElementsConvention(true)
     }, type => true);
     MongoClient   = new MongoPool().GetClient(configer);
     MongoDatabase = MongoClient.GetDatabase(configer.Database);
 }
コード例 #2
0
        public IMongoClient GetClient(MongoDbConfiger configer)
        {
            var connStr = configer.GetConnectionString();

            lock (LockObj)
            {
                if (Clients.ContainsKey(connStr))
                {
                    return(Clients[connStr]);
                }
            }

            lock (LockObj)
            {
                if (Clients.ContainsKey(connStr))
                {
                    return(Clients[connStr]);
                }
                var settings = new MongoClientSettings
                {
                    Servers = configer.Hosts.Select(p =>
                    {
                        var strs = p.Split(':');
                        var ip   = strs[0];
                        var port = string.IsNullOrWhiteSpace(strs[1]) ? 27017 : Convert.ToInt32(strs[1]);
                        return(new MongoServerAddress(ip, port));
                    }),
                    ReadPreference = configer.ReadPreference != null
                        ? new ReadPreference(ConvertReadPreference(configer.ReadPreference.Value))
                        : new ReadPreference(ReadPreferenceMode.Primary),
                    Credential =
                        MongoCredential.CreateCredential(configer.Database, configer.UserName, configer.Password),
                    ConnectTimeout        = TimeSpan.FromSeconds(300),
                    SocketTimeout         = TimeSpan.FromSeconds(300),
                    MaxConnectionLifeTime = TimeSpan.FromSeconds(300),
                    MinConnectionPoolSize = 100,
                    ConnectionMode        = ConnectionMode.Automatic
                };
                return(Clients.GetOrAdd(connStr, key => new MongoClient(settings)));
            }
        }