public void Test()
        {
            var configure = new MongoConfigurationBuilder();

            configure.ConnectionString(cs =>
            {
                cs.Pooled = true;
            });

            configure.Mapping(mapping =>
            {
                mapping.DefaultProfile(p =>
                {
                    p.AliasesAreCamelCased();
                    p.CollectionNamesAreCamelCasedAndPlural();
                });

                mapping.Map <Person>(m =>
                {
                    m.CollectionName("people");
                    m.Member(x => x.Age).Alias("age");
                    m.Member(x => x.Name).Alias("name").DefaultValue("something").Ignore();
                });
            });
        }
예제 #2
0
        protected virtual MongoConfigurationBuilder GetConfiguration()
        {
            var builder = new MongoConfigurationBuilder();

            builder.ReadConnectionStringFromAppSettings("tests");
            return(builder);
        }
예제 #3
0
        public void SetUp()
        {
            var configure = new MongoConfigurationBuilder();

            configure.ConnectionStringAppSettingKey("mongoserver");
            config = configure.BuildConfiguration();
        }
        public void SetUp()
        {
            var configure = new MongoConfigurationBuilder();

            configure.ConnectionStringAppSettingKey("mongoserver");
            config = configure.BuildConfiguration();
            SessionStateItemCollection  sessionItemsCollection  = new SessionStateItemCollection();
            HttpStaticObjectsCollection staticObjectsCollection = new HttpStaticObjectsCollection();

            item = new SessionStateStoreData(sessionItemsCollection, staticObjectsCollection, 1);
        }
예제 #5
0
        public static IServiceCollection AddMongoContext <TContext>(
            this IServiceCollection services,
            Action <MongoConfigurationBuilder> builder)
            where TContext : MongoDbContext
        {
            var configuration = new MongoConfigurationBuilder();

            builder(configuration);

            if (configuration.DatabaseName == null)
            {
                throw new ArgumentNullException("Не задано имя базы данных");
            }

            var clientSettings = string.IsNullOrEmpty(configuration.ConnectionString)
                ? new MongoClientSettings()
                : MongoClientSettings.FromConnectionString(configuration.ConnectionString);

            configuration.ConfigureClientSettings?.Invoke(clientSettings);

            if (clientSettings.Server == null)
            {
                throw new ArgumentNullException("Не заданы настройки подключения к серверу БД");
            }

            var databaseSettings = new MongoDatabaseSettings();

            configuration.ConfigureDatabaseSettings?.Invoke(databaseSettings);

            if (configuration.CamelCase)
            {
                var conventionPack      = new ConventionPack();
                var camelCaseConvention = new CamelCaseElementNameConvention();
                conventionPack.Add(camelCaseConvention);
                ConventionRegistry.Register("camelCase", conventionPack, t => true);
            }

            services.AddScoped(provider =>
            {
                var client   = new MongoClient(clientSettings);
                var database = client.GetDatabase(configuration.DatabaseName, databaseSettings);
                var context  = (TContext)Activator.CreateInstance(typeof(TContext), database);

                if (configuration.MigrationsAssembly != null)
                {
                    context.MigrationsAssembly = configuration.MigrationsAssembly;
                }

                return(context);
            });

            return(services);
        }
예제 #6
0
        public TokenService(IDatabaseManager databaseManager, IFactoriesManager factoriesManager)
        {
            factoriesManager.GetService <ILogger <ApplicationError> >().TryGetTarget(out exceptionLogger);

            databaseManager.MongoDBFactory.GetDatabase <JwtToken>().TryGetTarget(out mongoDBService);
            IConfigurationBuilder configurationBuilder = new MongoConfigurationBuilder(mongoDBService.Configuration);

            configurationBuilder.SetConfigurationFilePath(DATABASE_CONFIG_FILE).SetUserName().SetPassword()
            .SetAuthMechanism().SetDatabaseName().SetServerName().SetConnectionString();

            logConfiguration = new LogConfiguration(GetType());
        }
예제 #7
0
        private static MongoConfiguration GetConfiguration <T>() where T : class
        {
            var config = new MongoConfigurationBuilder();

            config.Mapping(mapping =>
            {
                mapping.DefaultProfile(d => d.SubClassesAre(s => s.IsSubclassOf(typeof(T))));
                mapping.Map <T>();
            });

            config.ConnectionString(Resources.ConnectionString);

            return(config.BuildConfiguration());
        }
예제 #8
0
        public RequestService(IFactoriesManager factoriesManager, IDatabaseManager databaseManager)
        {
            factoriesManager.GetService <ILogger <ApplicationError> >().TryGetTarget(out exceptionLogger);
            factoriesManager.GetService <IResponseService>().TryGetTarget(out responseService);
            factoriesManager.GetService <ITokenService>().TryGetTarget(out tokenService);

            databaseManager.MongoDBFactory.GetDatabase <RequestLog>().TryGetTarget(out requestDatabase);
            var configurationBuilder = new MongoConfigurationBuilder(requestDatabase.Configuration);

            configurationBuilder.SetConfigurationFilePath(databaseConfigFile).SetAuthMechanism()
            .SetUserName().SetPassword().SetDatabaseName().SetServerName().SetConnectionString();

            logConfiguration = new LogConfiguration(GetType());
        }
예제 #9
0
        public DocumentService(IFactoriesManager factoriesManager, IDatabaseManager databaseManager)
        {
            factoriesManager.GetService <ILogger <ApplicationError> >().TryGetTarget(out exceptionLogger);
            factoriesManager.GetService <IDateService>().TryGetTarget(out dateService);

            databaseManager.MongoDBFactory.GetDatabase <Document>().TryGetTarget(out database);

            IConfigurationBuilder configurationBuilder = new MongoConfigurationBuilder(database.Configuration);

            configurationBuilder.SetConfigurationFilePath(databaseConfigFile).SetUserName().SetPassword()
            .SetAuthMechanism().SetDatabaseName().SetServerName().SetConnectionString();

            logConfiguration = new LogConfiguration(GetType());
        }
예제 #10
0
        private Mongo GetMongo()
        {
            var config = new MongoConfigurationBuilder();

            config.Mapping(mapping =>
            {
                mapping.DefaultProfile(profile =>
                {
                    profile.SubClassesAre(t => t.IsSubclassOf(typeof(T)));
                });
                mapping.Map <T>();
            });
            config.ConnectionString(connectionString);
            return(new Mongo(config.BuildConfiguration()));
        }
예제 #11
0
        //  为Mongo 提供 MongoConfiguration
        public MongoConfiguration InitMongoBuilder(string ConnString)
        {
            var config = new MongoConfigurationBuilder();

            //加入连接字符串
            config.ConnectionString(ConnString);
            //映射公共类
            BaseMapping mapping = new BaseMapping();

            //向映射公共类注册自己定义映射
            mapping.AddMapping(new MyMapping().Mapping);
            //传入公共类的执行方法
            config.Mapping(mapping.ForeachMapping);
            return(config.BuildConfiguration());
        }
예제 #12
0
        private static MongoConfiguration BuildMongoConfiguration(ITypeCatalog snapshotTypeCatalog, string connectionString)
        {
            var configurationBuilder = new MongoConfigurationBuilder();

            configurationBuilder.ConnectionString(connectionString);
            configurationBuilder.Mapping(mapping =>
            {
                mapping.DefaultProfile(profile => profile.SubClassesAre(type => type.IsSubclassOf(typeof(Snapshot))));
                snapshotTypeCatalog
                .GetDerivedTypes(typeof(Snapshot))
                .ToList()
                .ForEach(type => MapEventType(type, mapping));
            });

            return(configurationBuilder.BuildConfiguration());
        }
예제 #13
0
        public UserPhotoService(IFactoriesManager factoriesManager, IDatabaseManager databasesManager)
        {
            databasesManager.MongoDBFactory.GetDatabase <Domain.UserPhoto.UserPhoto>().TryGetTarget(out database);

            IConfigurationBuilder configurationBuilder = new MongoConfigurationBuilder(database.Configuration);

            configurationBuilder.SetConfigurationFilePath(databaseConfigFile).SetAuthMechanism()
            .SetUserName().SetPassword().SetDatabaseName().SetServerName().SetConnectionString();

            factoriesManager.GetService <ILogger <ApplicationError> >().TryGetTarget(out exceptionLogger);
            factoriesManager.GetService <ITokenService>().TryGetTarget(out tokenService);
            factoriesManager.GetService <IHashService>().TryGetTarget(out hashService);
            factoriesManager.GetService <ICacheService>().TryGetTarget(out cacheService);

            logConfiguration = new LogConfiguration(this.GetType());
        }
예제 #14
0
        public LinkService(IFactoriesManager factoriesManager, IDatabaseManager databaseManager)
        {
            databaseManager.MongoDBFactory.GetDatabase <VerificationLink>().TryGetTarget(out verificationLinksDatabase);
            databaseManager.MongoDBFactory.GetDatabase <WordDownloadLink>().TryGetTarget(out wordLinksDatabase);

            IConfigurationBuilder configurationBuilder = new MongoConfigurationBuilder(verificationLinksDatabase.Configuration);

            configurationBuilder.SetConfigurationFilePath(databaseConfigFile).SetAuthMechanism()
            .SetUserName().SetPassword().SetDatabaseName().SetServerName().SetConnectionString();

            configurationBuilder = new MongoConfigurationBuilder(wordLinksDatabase.Configuration);
            configurationBuilder.SetConfigurationFilePath(databaseConfigFile).SetAuthMechanism()
            .SetUserName().SetPassword().SetDatabaseName().SetServerName().SetConnectionString();

            factoriesManager.GetService <ILogger <ApplicationError> >().TryGetTarget(out exceptionLogger);

            logConfiguration = new LogConfiguration(this.GetType());
        }
예제 #15
0
        /// <summary>
        ///     连接到数据库,只需执行一次
        /// </summary>
        public override bool ConnectDB()
        {
            ConnectionString = GetConnectString();
            var config = new MongoConfigurationBuilder();

            config.ConnectionString(ConnectionString);
            //定义Mongo服务
            Mongo     = new Mongo(config.BuildConfiguration());
            IsUseable = Mongo.TryConnect();
            if (IsUseable != true)
            {
                return(IsUseable);
            }
            // todo
            // update = new Document {["$inc"] = new Document(AutoIndexName, 1)};
            DB = Mongo.GetDatabase(DBName);
            return(IsUseable);
        }
예제 #16
0
        static void Main(string[] args)
        {
            OptionSet options = new OptionSet()
            {
                { "i|inspect_sessions", i => InspectSessions() },
                { "fe|flush_expired", fe => FlushExpiredSession() },
                { "aix|add_indexes", aix => AddIndexes() },
                { "?|h|help", h => ShowHelp() }
            };

            try
            {
                var configure = new MongoConfigurationBuilder();
                configure.ConnectionStringAppSettingKey("mongoserver");
                var config = configure.BuildConfiguration();
                options.Parse(args);
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }
예제 #17
0
        public static void Main(string[] args)
        {
            var config = new MongoConfigurationBuilder();

            // COMMENT OUT FROM HERE
            config.Mapping(mapping =>
            {
                mapping.DefaultProfile(profile =>
                {
                    profile.SubClassesAre(t => t.IsSubclassOf(typeof(MyClass)));
                });
                mapping.Map <MyClass>();
                mapping.Map <SubClass>();
            });
            // TO HERE

            config.ConnectionString("Server=127.0.0.1");

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                try
                {
                    var db         = mongo.GetDatabase("TestDb");
                    var collection = db.GetCollection <MyClass>();

                    MyClass square = new MyClass()
                    {
                        Corners = 4,
                        Name    = "Square"
                    };

                    MyClass circle = new MyClass()
                    {
                        Corners = 0,
                        Name    = "Circle"
                    };

                    SubClass sub = new SubClass()
                    {
                        Name    = "SubClass",
                        Corners = 6,
                        Ratio   = 3.43
                    };

                    collection.Save(square);
                    collection.Save(circle);
                    collection.Save(sub);

                    var superclass = (from item in db.GetCollection <MyClass>("MyClass").Linq()
                                      where item.Corners > 1
                                      select item.Corners).ToList();

                    var subclass = (from item in db.GetCollection <SubClass>("MyClass").Linq()
                                    where item.Ratio > 1
                                    select item.Corners).ToList();

                    Console.WriteLine("Count by LINQ on typed collection: {0}", collection.Linq().Count(x => x.Corners > 1));
                    Console.WriteLine("Count by LINQ on typed collection2: {0}", db.GetCollection <SubClass>().Linq().Count(x => x.Corners > 1));
                    //Console.WriteLine("Count by LINQ on typed collection3: {0}", db.GetCollection<SubClass>().Count(new { Corners = Op.GreaterThan(1) }));
                    Console.WriteLine("Count on typed collection: {0}", collection.Count(new { Corners = Op.GreaterThan(1) }));

                    var coll  = db.GetCollection("MyClass");
                    var count = coll.Count(new Document("Corners", Op.GreaterThan(1)));
                    Console.WriteLine("Count: {0}", count);
                    Console.ReadKey();
                }
                finally
                {
                    mongo.Disconnect();
                }
            }

            //var main = new MainClass();
            //main.Setup();
            //main.Run();
        }
예제 #18
0
 public CharacterSkillServiceDao(MongoConfigurationBuilder builder) : base(builder)
 {
 }
 public static MongoConfigurationBuilder MapNodaTimeDates(this MongoConfigurationBuilder builder)
 {
     builder.AddPlugin(_ => { NodaTimeSerializers.Register(); });
     return(builder);
 }
 private SessionStore()
 {
     configure = new MongoConfigurationBuilder();
     configure.ConnectionStringAppSettingKey("mongoserver");
     config = configure.BuildConfiguration();
 }