Exemple #1
0
        /// <summary>
        ///  初始化数据库连接
        /// </summary>
        /// <param name="options"></param>
        public static void InitConnection(StagingOptions options)
        {
            CheckNotNull.NotNull(options, nameof(options));
            CheckNotNull.NotEmpty(options.ConnectionMaster, nameof(options.ConnectionMaster));

            Options = options;

            // 初始化主库连接实例
            ConnectionStringConfiguration conn = new ConnectionStringConfiguration()
            {
                ConnectionString = options.ConnectionMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(options.ConnectionMaster)
            };

            InstanceMaster = new MasterExecute(options.Logger, conn);

            // 初始化从库连接实例
            List <ConnectionStringConfiguration> connList = GetSlaves(options.ConnectionSlaves);

            if (connList != null)
            {
                InstanceSlave = new SlaveExecute(options.Logger, connList);
            }

            if (options.CacheOptions != null && options.CacheOptions.Cache != null)
            {
                CacheManager = new CacheManager(options.CacheOptions);
            }
        }
Exemple #2
0
 /// <summary>
 ///  启动连接监控
 /// </summary>
 /// <param name="connectionString"></param>
 private void Monitor(ConnectionStringConfiguration connS)
 {
     ErrorList.Add(connS);
     if (timer == null)
     {
         timer = new Timer(OnTick, this, 10 * 1000, 60 * 1000);
         Console.WriteLine("监控服务已启动");
     }
 }
Exemple #3
0
        /// <summary>
        /// Instantiate right away.
        /// </summary>
        private Configuration()
        {
            var builder = new ConfigurationBuilder()
            .AddJsonFile("config.json")
            .AddJsonFile("config.local.json", optional: true)
            .AddEnvironmentVariables();
            configuration = builder.Build();

            ConnectionStrings = new ConnectionStringConfiguration(configuration.GetSection("ConnectionStrings"));
            Label = new LabelConfiguration(configuration.GetSection("Label"));
            Authentication = new AuthenticationConfiguration(configuration.GetSection("Authentication"));
        }
Exemple #4
0
        private void LoadDataFromConnection(ConnectionStringConfiguration selectedCon)
        {
            ServerNameTxtB.Text         = selectedCon.ServerName;
            DatabaseNameTxtB.Text       = selectedCon.DatabaseName;
            TrustedConnectionCB.Checked = selectedCon.TrustedConnection;

            if (TrustedConnectionCB.Checked)
            {
                userTxtB.Text     = selectedCon.UserId;
                passwordTxtB.Text = selectedCon.Password;
            }
        }
Exemple #5
0
        // HELPER METHODS SECTION
        //---------------------------------------------------------------------

        #region Helper methods

        // LOAD CONFIGURATIONS SECTION
        //-------------------------------------------------
        private void LoadConnectionsConfiguration()
        {
            // RECIPES CONNECTION
            //---------------------------------------------
            try
            {
                _recipesConnection     = _connectionConfigManager.Get("recipes");
                View.RecipesFolderPath = _recipesConnection.ConnectionString;
            }
            catch (ArgumentNullException ex)
            {
                _log.Error(ex.ToString());
            }
            catch (RepositoryLoadException ex)
            {
                _log.Error(ex.ToString());
            }


            // REMAINS CONNECTION
            //---------------------------------------------
            try
            {
                _remainsConnection     = _connectionConfigManager.Get("remains");
                View.RemainsFolderPath = _remainsConnection.ConnectionString;
            }
            catch (ArgumentNullException ex)
            {
                _log.Error(ex.ToString());
            }
            catch (RepositoryLoadException ex)
            {
                _log.Error(ex.ToString());
            }


            // GUIDES CONNECTION
            //---------------------------------------------
            try
            {
                _guidesConfiguration  = _guidesConfigurationManager.Get();
                View.GuidesFolderPath = _guidesConfiguration.Path;
            }
            catch (ArgumentNullException ex)
            {
                _log.Error(ex.ToString());
            }
            catch (RepositoryLoadException ex)
            {
                _log.Error(ex.ToString());
            }
        }
Exemple #6
0
        /// <summary>
        ///  刷新数据库连接
        /// </summary>
        /// <param name="connectionMaster"></param>
        /// <param name="connectionSlaves"></param>
        public static void Refresh(string connectionMaster, string[] connectionSlaves = null)
        {
            ConnectionStringConfiguration conn = new ConnectionStringConfiguration()
            {
                ConnectionString = connectionMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(connectionMaster)
            };

            InstanceMaster.Pool.Refresh(new List <ConnectionStringConfiguration>()
            {
                conn
            });
            List <ConnectionStringConfiguration> connList = GetSlaves(connectionSlaves);

            InstanceSlave?.Pool?.Refresh(connList);
        }
        // HELPER METHODS SECTION
        //---------------------------------------------------------------------

        #region Helper methods

        // LOAD CONFIGURATIONS SECTION
        //-------------------------------------------------
        private void LoadConnectionsConfiguration()
        {
            // RECIPES CONNECTION
            //---------------------------------------------
            try
            {
                _recipesConnection = _connectionConfigManager.Get("recipes");

                var folderPath = ParseFolderPath(_recipesConnection.ConnectionString);

                View.RecipesFolderPath = folderPath;

                /** Provider =Microsoft.Jet.OLEDB.4.0;
                 * Data Source=C:\test\converter\recipes\;
                 * User ID=Admin;
                 * Password=;
                 * Extended Properties='dBASE IV';*/
            }
            catch (ArgumentNullException ex)
            {
                _log.Error(ex.ToString());
            }
            catch (RepositoryLoadException ex)
            {
                _log.Error(ex.ToString());
            }


            // REMAINS CONNECTION
            //---------------------------------------------
            try
            {
                _remainsConnection = _connectionConfigManager.Get("remains");

                var folderPath = ParseFolderPath(_remainsConnection.ConnectionString);

                View.RemainsFolderPath = folderPath;
            }
            catch (ArgumentNullException ex)
            {
                _log.Error(ex.ToString());
            }
            catch (RepositoryLoadException ex)
            {
                _log.Error(ex.ToString());
            }
        }
Exemple #8
0
        public static void RegisterIdentityService(IServiceCollection services)
        {
            #region Identity Context
            services.AddDbContext <SocialHeroesContext>(options =>
                                                        options.UseSqlServer(ConnectionStringConfiguration.ConnectionString()));

            services.AddIdentity <User, Role>()
            .AddEntityFrameworkStores <SocialHeroesContext>()
            .AddDefaultTokenProviders();
            #endregion

            #region Identity Settings
            services
            .Configure <IdentityOptions>(options =>
            {
                //Lockout
                options.Lockout.AllowedForNewUsers      = true;
                options.Lockout.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(5);
                options.Lockout.MaxFailedAccessAttempts = 5;

                //Password
                options.Password.RequireDigit           = true;
                options.Password.RequiredLength         = 6;
                options.Password.RequiredUniqueChars    = 1;
                options.Password.RequireLowercase       = false;
                options.Password.RequireUppercase       = false;
                options.Password.RequireNonAlphanumeric = false;

                //SignIn
                options.SignIn.RequireConfirmedEmail       = false;
                options.SignIn.RequireConfirmedPhoneNumber = false;

                //Token
                //options.Tokens.AuthenticatorTokenProvider
                //options.Tokens.ChangeEmailTokenProvider
                //options.Tokens.ChangePhoneNumberTokenProvider
                //options.Tokens.EmailConfirmationTokenProvider
                //options.Tokens.PasswordResetTokenProvider

                //User
                options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
                options.User.RequireUniqueEmail        = false;
            });

            #endregion
        }
Exemple #9
0
        /// <summary>
        /// Creates the connection string.
        /// </summary>
        /// <param name="externalIdentifier">The external identifier.</param>
        /// <param name="connectionStringType">Type of the connection string.</param>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        public async Task CreateConnectionString(String externalIdentifier, ConnectionStringType connectionStringType, String connectionString, CancellationToken cancellationToken)
        {
            this.GuardAgainstNoExternalIdentifier(externalIdentifier);

            // Find the record in the config repository
            using (ConnectionStringConfigurationContext context = this.ContextResolver())
            {
                ConnectionStringConfiguration configuration = new ConnectionStringConfiguration
                {
                    ExternalIdentifier     = externalIdentifier,
                    ConnectionString       = connectionString,
                    ConnectionStringTypeId = (Int32)connectionStringType
                };

                await context.AddAsync(configuration, cancellationToken);

                await context.SaveChangesAsync(cancellationToken);
            }
        }
Exemple #10
0
        /// <summary>
        ///  刷新数据库连接
        /// </summary>
        /// <param name="connS"></param>
        /// <param name="poolSize"></param>
        public static void Refresh(string connectionMaster, string[] connectionSlaves = null, int slavesMaxPool = -1)
        {
            int poolsizeMaster = GetPollSize(connectionMaster);
            ConnectionStringConfiguration connS = new ConnectionStringConfiguration()
            {
                ConnectionString = connectionMaster,
                MaxConnection    = poolsizeMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(connectionMaster)
            };

            InstanceMaster.Pool.Refresh(new List <ConnectionStringConfiguration>()
            {
                connS
            }, connS.MaxConnection);

            List <ConnectionStringConfiguration> connList = GetSlaves(connectionSlaves, out int poolsizeSlave);

            InstanceSlave?.Pool?.Refresh(connList, poolsizeSlave);
        }
Exemple #11
0
        /// <summary>
        ///  初始化数据库连接
        /// </summary>
        /// <param name="logger">日志组件</param>
        /// <param name="connectionMaster">可读写数据库连接</param>
        /// <param name="connectionStringSlave">从库数据库连接</param>
        /// <param name="connectionSlaves">从库连接池总大小,如果不指定(默认 -1),如果没有设定 maximum pool size 的值,则从库中读取 maximum pool size 设定的值进行累计</param>
        public static void InitConnection(StagingOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(StagingOptions));
            }
            if (string.IsNullOrEmpty(options.ConnectionMaster))
            {
                throw new ArgumentNullException("connectionString not null");
            }

            Options = options;

            // 初始化主库连接实例
            int poolsizeMaster = GetPollSize(options.ConnectionMaster);
            ConnectionStringConfiguration connS = new ConnectionStringConfiguration()
            {
                ConnectionString = options.ConnectionMaster,
                MaxConnection    = poolsizeMaster,
                DbConnection     = new Npgsql.NpgsqlConnection(options.ConnectionMaster)
            };

            InstanceMaster = new MasterExecute(options.Logger, connS);

            // 初始化从库连接实例
            List <ConnectionStringConfiguration> connList = GetSlaves(options.ConnectionSlaves, out int poolsizeSlave);

            if (options.SlavesMaxPool != -1)
            {
                poolsizeSlave = options.SlavesMaxPool;
            }
            if (connList != null)
            {
                InstanceSlave = new SlaveExecute(options.Logger, connList, poolsizeSlave);
            }

            if (options.CacheOptions != null && options.CacheOptions.Cache != null)
            {
                Console.WriteLine("options.CacheOptions.Cache:{0}", options.CacheOptions.Cache == null);
                CacheManager = new CacheManager(options.CacheOptions);
            }
        }
Exemple #12
0
        /// <summary>
        ///  初始化数据库连接
        /// </summary>
        /// <param name="logger">日志组件</param>
        /// <param name="connectionMaster">可读写数据库连接</param>
        /// <param name="connectionStringSlave">从库数据库连接</param>
        /// <param name="connectionSlaves">从库连接池总大小,如果不指定(默认 -1),如果没有设定 maximum pool size 的值,则从库中读取 maximum pool size 设定的值进行累计</param>
        public static void InitConnection(ILogger logger, string connectionMaster, string[] connectionSlaves = null, int slavesMaxPool = -1)
        {
            if (string.IsNullOrEmpty(connectionMaster))
            {
                throw new ArgumentNullException("connectionString not null");
            }

            // 初始化主库连接实例
            int poolsizeMaster = GetPollSize(connectionMaster);
            ConnectionStringConfiguration connS = new ConnectionStringConfiguration()
            {
                ConnectionString = connectionMaster, MaxConnection = poolsizeMaster, DbConnection = new Npgsql.NpgsqlConnection(connectionMaster)
            };

            instanceMaster = new MasterExecute(logger, connS);

            // 初始化从库连接实例
            if (connectionSlaves != null && connectionSlaves.Length > 0)
            {
                int pollsizeSlave = 0;

                List <ConnectionStringConfiguration> connList = new List <ConnectionStringConfiguration>();
                for (int i = 0; i < connectionSlaves.Length; i++)
                {
                    var item = connectionSlaves[i];
                    connList.Add(new ConnectionStringConfiguration()
                    {
                        ConnectionString = item,
                        Id            = i,
                        MaxConnection = GetPollSize(item),
                        DbConnection  = new Npgsql.NpgsqlConnection(connectionMaster)
                    });
                    pollsizeSlave += connList[i].MaxConnection;
                }
                if (slavesMaxPool != -1)
                {
                    pollsizeSlave = slavesMaxPool;
                }

                instanceSlave = new SlaveExecute(logger, connList, pollsizeSlave);
            }
        }
Exemple #13
0
        /// <summary>
        /// Gets the connection string.
        /// </summary>
        /// <param name="externalIdentifier">The external identifier.</param>
        /// <param name="connectionStringType">Type of the connection string.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        /// <exception cref="NotFoundException">No configuration found for Connection String Identifier [{connectionStringIdentifier}] and DataModelType [{dataModelType}]</exception>
        public async Task <String> GetConnectionString(String externalIdentifier, ConnectionStringType connectionStringType, CancellationToken cancellationToken)
        {
            this.GuardAgainstNoExternalIdentifier(externalIdentifier);

            // Find the record in the config repository
            using (ConnectionStringConfigurationContext context = this.ContextResolver())
            {
                ConnectionStringConfiguration configuration =
                    await context.ConnectionStringConfiguration.SingleOrDefaultAsync(c => c.ExternalIdentifier == externalIdentifier &&
                                                                                     c.ConnectionStringTypeId == (Int32)connectionStringType,
                                                                                     cancellationToken);

                if (configuration == null)
                {
                    throw new
                          NotFoundException($"No connection string configuration found for External Identifier [{externalIdentifier}] and Connection String Type [{connectionStringType}]");
                }

                return(configuration.ConnectionString);
            }
        }
Exemple #14
0
 public ConfigurationForm()
 {
     connectionData = new ConnectionStringConfiguration();
     InitializeComponent();
 }
        /// <summary>
        /// ��̬���ݷ��ʶ��� 
        /// </summary>
        /// <param name="csc">���ݿ����á�</param>
        /// <returns>���ݷ��ʽӿ�</returns>
        public static IDBAccess Instance(ConnectionStringConfiguration csc)
        {
            if (csc == null)
                return null;
            EnumDbType dbType = EnumDbType.SqlServer;
            try
            {
                if (!string.IsNullOrEmpty(csc.ProviderName))
                    dbType = (EnumDbType)Enum.Parse(typeof(EnumDbType), csc.ProviderName);
            }
            catch (Exception) { }

            return Instance(csc.ConnectionString, dbType);
        }
Exemple #16
0
 /// <summary>
 ///  构造函数
 /// </summary>
 /// <param name="logger">日志输出对象</param>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="poolSize">连接池大小</param>
 public PgExecute(ILogger logger, ConnectionStringConfiguration connectionString) : this(logger, new List <ConnectionStringConfiguration>() { connectionString })
 {
 }
Exemple #17
0
 public MasterExecute(ILogger logger, ConnectionStringConfiguration connectionString) : base(logger, connectionString)
 {
 }
 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 => optionsBuilder.UseSqlServer(ConnectionStringConfiguration.ConnectionString());