/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual void GenerateOnConfiguring( [NotNull] string connectionString, bool suppressConnectionStringWarning) { Check.NotNull(connectionString, nameof(connectionString)); _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") .Append( _providerCodeGenerator != null ? _cSharpUtilities.Generate( _providerCodeGenerator.GenerateUseProvider(connectionString)) #pragma warning disable CS0618 // Type or member is obsolete : _legacyProviderCodeGenerator.GenerateUseProvider(connectionString, Language)) #pragma warning restore CS0618 // Type or member is obsolete .AppendLine(";"); } _sb.AppendLine("}"); } _sb.AppendLine("}"); _sb.AppendLine(); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual void GenerateOnModelCreating( [NotNull] IModel model, bool useDataAnnotations) { Check.NotNull(model, nameof(model)); _sb.AppendLine("protected override void OnModelCreating(ModelBuilder modelBuilder)"); _sb.Append("{"); var annotations = model.GetAnnotations().ToList(); RemoveAnnotation(ref annotations, ScaffoldingAnnotationNames.DatabaseName); RemoveAnnotation(ref annotations, ScaffoldingAnnotationNames.EntityTypeErrors); var annotationsToRemove = new List <IAnnotation>(); annotationsToRemove.AddRange( annotations.Where( a => a.Name.StartsWith(RelationalAnnotationNames.SequencePrefix, StringComparison.Ordinal))); var lines = new List <string>(); foreach (var annotation in annotations) { if (_annotationCodeGenerator.IsHandledByConvention(model, annotation)) { annotationsToRemove.Add(annotation); } else { var methodCall = _annotationCodeGenerator.GenerateFluentApi(model, annotation); var line = methodCall == null #pragma warning disable CS0618 // Type or member is obsolete ? _annotationCodeGenerator.GenerateFluentApi(model, annotation, Language) #pragma warning restore CS0618 // Type or member is obsolete : _cSharpUtilities.Generate(methodCall); if (line != null) { lines.Add(line); annotationsToRemove.Add(annotation); } } } lines.AddRange(GenerateAnnotations(annotations.Except(annotationsToRemove))); if (lines.Count > 0) { using (_sb.Indent()) { _sb.AppendLine(); _sb.Append("modelBuilder" + lines[0]); using (_sb.Indent()) { foreach (var line in lines.Skip(1)) { _sb.AppendLine(); _sb.Append(line); } } _sb.AppendLine(";"); } } using (_sb.Indent()) { foreach (var entityType in model.GetEntityTypes()) { _entityTypeBuilderInitialized = false; GenerateEntityType(entityType, useDataAnnotations); if (_entityTypeBuilderInitialized) { _sb.AppendLine("});"); } } foreach (var sequence in model.Relational().Sequences) { GenerateSequence(sequence); } } _sb.AppendLine("}"); }