protected override void InitializeTarget()
        {
            base.InitializeTarget();

            var uri            = ConnectionStringName.GetConnectionString() ?? Uri;
            var nodes          = uri.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(url => new Uri(url));
            var connectionPool = new StaticConnectionPool(nodes);

            var config = new ConnectionConfiguration(connectionPool);

            if (RequireAuth)
            {
                config.BasicAuthentication(Username, Password);
            }

            if (ElasticsearchSerializer != null)
            {
                config = new ConnectionConfiguration(connectionPool, _ => ElasticsearchSerializer);
            }

            _client = new ElasticLowLevelClient(config);

            if (!string.IsNullOrEmpty(ExcludedProperties))
            {
                _excludedProperties = ExcludedProperties.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
            }
        }
Пример #2
0
        protected override void Validate()
        {
            base.Validate();

            if (!Assembly.HasValue())
            {
                throw new CommandException(string.Format(MyResources.MissingOption, Assembly.LongName));
            }

            if (ConnectionString.HasValue() || ConnectionProvider.HasValue())
            {
                if (!ConnectionString.HasValue())
                {
                    throw new CommandException(string.Format(MyResources.MissingOption, ConnectionString.LongName));
                }
                if (!ConnectionProvider.HasValue())
                {
                    throw new CommandException(string.Format(MyResources.MissingOption, ConnectionProvider.LongName));
                }
                if (ConnectionStringName.HasValue())
                {
                    throw new CommandException(
                              string.Format(
                                  MyResources.MutuallyExclusiveOptions,
                                  ConnectionStringName.LongName,
                                  ConnectionString.LongName));
                }
            }
        }
        private void EnsureConnectionOpen()
        {
            if (_client == null)
            {
                var uri            = ConnectionStringName.GetConnectionString() ?? Uri;
                var nodes          = uri.Render(new LogEventInfo()).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(url => new Uri(url));
                var connectionPool = new StaticConnectionPool(nodes);

                var config =
                    new ConnectionSettings(connectionPool, sourceSerializer: (builtin, settings) => new JsonNetSerializer(
                                               builtin, settings,
                                               () => new JsonSerializerSettings
                {
                    NullValueHandling     = NullValueHandling.Include,
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                },
                                               resolver => resolver.NamingStrategy = new SnakeCaseNamingStrategy()
                                               ));

                if (RequireAuth)
                {
                    config.BasicAuthentication(Username, Password);
                }

                if (DisableAutomaticProxyDetection)
                {
                    config.DisableAutomaticProxyDetection();
                }

                _client = new ElasticLowLevelClient(config);
            }
        }
Пример #4
0
            internal void Populate(Settings settings)
            {
                var storeSettings = settings.Store;

                if (Type.HasValue())
                {
                    storeSettings.Type = Type;
                }
                if (Path.HasValue())
                {
                    storeSettings.Path = Path;
                }
                if (ConnectionString.HasValue())
                {
                    storeSettings.ConnectionString = ConnectionString;
                }
#if !NETSTANDARD2_0
                if (ConnectionStringName.HasValue())
                {
                    storeSettings.ConnectionStringName = ConnectionStringName;
                }
#endif
                if (Size.HasValue)
                {
                    storeSettings.Size = Size.Value;
                }
                if (RollupSeconds.HasValue)
                {
                    storeSettings.RollupPeriod = TimeSpan.FromSeconds(RollupSeconds.Value);
                }
                if (BackupQueueSize.HasValue)
                {
                    storeSettings.BackupQueueSize = BackupQueueSize.Value;
                }
            }
Пример #5
0
        public ulong GetTaskKey()
        {
            Debug.Assert(Name != null);
            Debug.Assert(ConnectionStringName != null);

            return(_taskKey ?? (_taskKey = Hashing.XXHash64.Calculate(Name.ToLowerInvariant(), Encodings.Utf8) ^
                                           Hashing.XXHash64.Calculate(ConnectionStringName.ToLowerInvariant(), Encodings.Utf8)).Value);
        }
Пример #6
0
        protected override void InitializeTarget()
        {
            base.InitializeTarget();

            _environment            = EnvironmentKeyName?.GetConfigurationValue();
            _connectionString       = ConnectionStringName.GetConnectionString();
            _redisConnectionManager = new RedisConnectionManager(_connectionString);
        }
Пример #7
0
        ///----------------------------------------------------------------------------------------
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public virtual string GetConnectionStringName()
        {
            if (ConnectionStringName.IsNullOrEmpty())
            {
                throw new NullReferenceException("ConnectionStringName is undefined. Either set ConnectionStringName " +
                                                 "or override medthod GetConnectionStringName()");
            }

            return(ConnectionStringName);
        }
Пример #8
0
        public void LoadConnectionString(string connectionStringName = null)
        {
            if (connectionStringName.IsNotNullOrEmpty())
            {
                ConnectionStringName = connectionStringName;
            }

            if (ConnectionStringName.IsNullOrEmpty())
            {
                throw new NullReferenceException("ConnectionStringName undefined");
            }

            ConnectionString = Configuration.GetConnectionString(ConnectionStringName);
        }
Пример #9
0
        protected override int Execute()
        {
            if (_script.HasValue())
            {
                var sql = CreateExecutor().ScriptUpdate(
                    _sourceMigration.Value(),
                    _targetMigration.Value(),
                    _force.HasValue(),
                    ConnectionStringName.Value(),
                    ConnectionString.Value(),
                    ConnectionProvider.Value(),
                    MigrationsConfig.Value());

                Reporter.WriteData(sql);
            }
            else
            {
                Reporter.WriteInformation(MyResources.UpdateDatabaseCommand_VerboseInstructions);

                try
                {
                    CreateExecutor().Update(
                        _targetMigration.Value(),
                        _force.HasValue(),
                        ConnectionStringName.Value(),
                        ConnectionString.Value(),
                        ConnectionProvider.Value(),
                        MigrationsConfig.Value());
                }
                catch (WrappedException ex)
                {
                    if (ex.Type == "System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException")
                    {
                        Reporter.WriteWarning(ex.Message);
                        Reporter.WriteWarning(MyResources.AutomaticMigrationDisabledInfo);
                    }
                    else
                    {
                        throw;
                    }
                }
            }

            return(base.Execute());
        }
Пример #10
0
        protected override int Execute()
        {
            Reporter.WriteInformation(MyResources.GetMigrationsCommand_Intro);

            var migrations = CreateExecutor().GetDatabaseMigrations(
                ConnectionStringName.Value(),
                ConnectionString.Value(),
                ConnectionProvider.Value(),
                MigrationsConfig.Value());

            if (migrations.Any())
            {
                foreach (var migration in migrations)
                {
                    Reporter.WriteData(migration);
                }
            }
            else
            {
                Reporter.WriteInformation(MyResources.GetMigrationsCommand_NoHistory);
            }

            return(base.Execute());
        }
Пример #11
0
        protected override int Execute()
        {
            var migrationsDirectory      = _migrationsDir.Value();
            var qualifiedContextTypeName = CreateExecutor().GetContextType(
                _context.Value(),
                _contextAssembly.Value());
            var isVb           = string.Equals(Language.Value(), "VB", StringComparison.OrdinalIgnoreCase);
            var fileName       = isVb ? "Configuration.vb" : "Configuration.cs";
            var templateStream = typeof(MigrationsEnableCommand).Assembly.GetManifestResourceStream("System.Data.Entity.Tools.Templates." + fileName);

            Debug.Assert(templateStream != null);

            string template;

            using (var templateReader = new StreamReader(templateStream, Encoding.UTF8))
            {
                template = templateReader.ReadToEnd();
            }

            var tokens = new Dictionary <string, string>();

            if (!string.IsNullOrWhiteSpace(migrationsDirectory))
            {
                tokens["migrationsDirectory"]
                    = "\r\n            MigrationsDirectory = "
                      + (!isVb ? "@" : null)
                      + "\"" + migrationsDirectory + "\""
                      + (!isVb ? ";" : null);
            }
            else
            {
                migrationsDirectory = "Migrations";
            }

            tokens["enableAutomaticMigrations"]
                = _auto.HasValue()
                      ? (isVb ? "True" : "true")
                      : (isVb ? "False" : "false");

            var rootNamespace       = RootNamespace.Value();
            var migrationsNamespace = migrationsDirectory.Replace("\\", ".");

            tokens["namespace"]
                = !isVb && !string.IsNullOrWhiteSpace(rootNamespace)
                      ? rootNamespace + "." + migrationsNamespace
                      : migrationsNamespace;

            if (isVb && qualifiedContextTypeName.StartsWith(rootNamespace + "."))
            {
                tokens["contextType"]
                    = qualifiedContextTypeName.Substring(rootNamespace.Length + 1).Replace('+', '.');
            }
            else
            {
                tokens["contextType"] = qualifiedContextTypeName.Replace('+', '.');
            }

            if (Path.IsPathRooted(migrationsDirectory))
            {
                throw new CommandException(string.Format(MyResources.MigrationsDirectoryParamIsRooted, migrationsDirectory));
            }

            var absoluteMigrationsDirectory = Path.Combine(ProjectDir.Value(), migrationsDirectory);
            var absolutePath = Path.Combine(absoluteMigrationsDirectory, fileName);

            if (!_force.HasValue() &&
                File.Exists(absolutePath))
            {
                throw new CommandException(string.Format(MyResources.MigrationsAlreadyEnabled, Assembly.Value()));
            }

            var fullMigrationsNamespace = rootNamespace + "." + migrationsNamespace;

            Reporter.WriteInformation(MyResources.EnableMigrations_BeginInitialScaffold);

            var scaffoldedMigration = CreateExecutor().ScaffoldInitialCreate(
                ConnectionStringName.Value(),
                ConnectionString.Value(),
                ConnectionProvider.Value(),
                qualifiedContextTypeName,
                _contextAssembly.Value(),
                fullMigrationsNamespace,
                _auto.HasValue(),
                migrationsDirectory);

            if (scaffoldedMigration != null)
            {
                if (!_auto.HasValue())
                {
                    WriteMigration(scaffoldedMigration);

                    Reporter.WriteWarning(string.Format(
                                              MyResources.EnableMigrations_InitialScaffold,
                                              scaffoldedMigration.MigrationId));
                }

                // We found an initial create so we need to add an explicit ContextKey
                // assignment to the configuration

                tokens["contextKey"]
                    = "\r\n            ContextKey = "
                      + "\"" + qualifiedContextTypeName + "\""
                      + (!isVb ? ";" : null);
            }

            Directory.CreateDirectory(absoluteMigrationsDirectory);
            File.WriteAllText(absolutePath, new TemplateProcessor().Process(template, tokens), Encoding.UTF8);

            if (_json.HasValue())
            {
                string migrationPath          = null;
                string migrationDesignerPath  = null;
                string migrationResourcesPath = null;
                if (scaffoldedMigration != null)
                {
                    migrationPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + "." + scaffoldedMigration.Language);
                    migrationDesignerPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + ".resx");
                    migrationResourcesPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + ".Designer." + scaffoldedMigration.Language);
                }

                Reporter.WriteData("{");
                Reporter.WriteData("  \"migrationsConfiguration\": " + Json.Literal(absolutePath) + ",");
                Reporter.WriteData("  \"migration\": " + Json.Literal(migrationPath) + ",");
                Reporter.WriteData("  \"migrationResources\": " + Json.Literal(migrationDesignerPath) + ",");
                Reporter.WriteData("  \"migrationDesigner\": " + Json.Literal(migrationResourcesPath));
                Reporter.WriteData("}");
            }

            return(base.Execute());
        }
Пример #12
0
 public static string GetConnectionString(this IConfiguration configuration, ConnectionStringName connectionStringName)
 {
     return(configuration.GetConnectionString(Enum.GetName(typeof(ConnectionStringName), connectionStringName)));
 }
Пример #13
0
        protected override int Execute()
        {
            var scaffoldedMigration = CreateExecutor().Scaffold(
                _name.Value,
                ConnectionStringName.Value(),
                ConnectionString.Value(),
                ConnectionProvider.Value(),
                MigrationsConfig.Value(),
                _ignoreChanges.HasValue());

            Reporter.WriteInformation(
                string.Format(
                    !scaffoldedMigration.IsRescaffold
                        ? MyResources.ScaffoldingMigration
                        : MyResources.RescaffoldingMigration,
                    _name.Value));

            var userCodePath
                = WriteMigration(scaffoldedMigration, scaffoldedMigration.IsRescaffold, _force.HasValue(), _name.Value);

            if (!scaffoldedMigration.IsRescaffold)
            {
                Reporter.WriteWarning(string.Format(MyResources.SnapshotBehindWarning, _name.Value));

                var databaseMigrations
                    = CreateExecutor().GetDatabaseMigrations(
                          ConnectionStringName.Value(),
                          ConnectionString.Value(),
                          ConnectionProvider.Value(),
                          MigrationsConfig.Value())
                      .Take(2).ToList();

                var lastDatabaseMigration = databaseMigrations.FirstOrDefault();

                if ((lastDatabaseMigration != null) &&
                    string.Equals(lastDatabaseMigration.MigrationName(), _name.Value, StringComparison.Ordinal))
                {
                    var revertTargetMigration
                        = databaseMigrations.ElementAtOrDefault(1);

                    Reporter.WriteWarning(
                        string.Format(
                            MyResources.DidYouMeanToRescaffold,
                            _name.Value,
                            revertTargetMigration ?? "$InitialDatabase",
                            Path.GetFileName(userCodePath)));
                }
            }

            if (_json.HasValue())
            {
                string migrationPath          = null;
                string migrationDesignerPath  = null;
                string migrationResourcesPath = null;
                if (scaffoldedMigration != null)
                {
                    var absoluteMigrationsDirectory = Path.Combine(ProjectDir.Value(), scaffoldedMigration.Directory);

                    migrationPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + "." + scaffoldedMigration.Language);
                    migrationDesignerPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + ".resx");
                    migrationResourcesPath = Path.Combine(
                        absoluteMigrationsDirectory,
                        scaffoldedMigration.MigrationId + ".Designer." + scaffoldedMigration.Language);
                }

                Reporter.WriteData("{");
                Reporter.WriteData("  \"migration\": " + Json.Literal(migrationPath) + ",");
                Reporter.WriteData("  \"migrationResources\": " + Json.Literal(migrationDesignerPath) + ",");
                Reporter.WriteData("  \"migrationDesigner\": " + Json.Literal(migrationResourcesPath));
                Reporter.WriteData("}");
            }

            return(base.Execute());
        }
 public TableNameController(ConnectionStringName db)
 {
     _db = db;
 }
 protected override void Execute(CodeActivityContext context)
 {
     Value.Set(context, ConfigurationManager.ConnectionStrings[ConnectionStringName.Get(context)].ConnectionString);
 }