/// <summary>
        /// Generate OnConfiguring method.
        /// </summary>
        /// <param name="connectionString">Database connection string.</param>
        /// <param name="suppressConnectionStringWarning">Suppress connection string warning.</param>
        protected override void GenerateOnConfiguring(string connectionString, bool suppressConnectionStringWarning)
        {
            Check.NotNull(connectionString, nameof(connectionString));

            var sb = new IndentedStringBuilder();

            using (sb.Indent())
                using (sb.Indent())
                {
                    sb.AppendLine("protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)");
                    sb.AppendLine("{");

                    using (sb.Indent())
                    {
                        sb.AppendLine("if (!optionsBuilder.IsConfigured)");
                        sb.AppendLine("{");

                        using (sb.Indent())
                        {
                            if (!suppressConnectionStringWarning)
                            {
                                sb.DecrementIndent()
                                .DecrementIndent()
                                .DecrementIndent()
                                .DecrementIndent()
                                .AppendLine("#warning " + DesignStrings.SensitiveInformationWarning)
                                .IncrementIndent()
                                .IncrementIndent()
                                .IncrementIndent()
                                .IncrementIndent();
                            }

                            sb.Append("optionsBuilder");

                            var useProviderCall = ProviderConfigurationCodeGenerator.GenerateUseProvider(
                                connectionString,
                                ProviderConfigurationCodeGenerator.GenerateProviderOptions());
                            var contextOptions = ProviderConfigurationCodeGenerator.GenerateContextOptions();
                            if (contextOptions != null)
                            {
                                useProviderCall = useProviderCall.Chain(contextOptions);
                            }

                            sb.Append(CSharpHelper.Fragment(useProviderCall))
                            .AppendLine(";");
                        }
                        sb.AppendLine("}");
                    }

                    sb.AppendLine("}");
                }

            var onConfiguring = sb.ToString();

            TemplateData.Add("on-configuring", onConfiguring);
        }
        /// <summary>
        /// Generate OnConfiguring method.
        /// </summary>
        /// <param name="connectionString">Database connection string.</param>
        /// <param name="suppressConnectionStringWarning">Suppress connection string warning.</param>
        protected override void GenerateOnConfiguring([NotNull] string connectionString, bool suppressConnectionStringWarning)
        {
            Check.NotNull(connectionString, nameof(connectionString));

            var onConfiguring = GetOnConfiguring(connectionString, suppressConnectionStringWarning);

            TemplateData.Add("on-configuring", onConfiguring);

            TemplateData.Add("connection-string", connectionString);
            TemplateData.Add("connectionstring-warning", $"#warning {DesignStrings.SensitiveInformationWarning}");

            var useProviderCall = ProviderConfigurationCodeGenerator.GenerateUseProvider(
                connectionString, ProviderConfigurationCodeGenerator.GenerateProviderOptions());
            var contextOptions = ProviderConfigurationCodeGenerator.GenerateContextOptions();

            if (contextOptions != null)
            {
                useProviderCall = useProviderCall.Chain(contextOptions);
            }

            TemplateData.Add("options-builder-provider", CSharpHelper.Fragment(useProviderCall));
        }