public static void ConfigureNames(this ModelBuilder modelBuilder, NamingOptions namingOptions)
        {
            foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes())
            {
                if (namingOptions.EntitiesToSkipEntirely(entity))
                {
                    continue;
                }

                // Entity / Table
                if (!namingOptions.EntitiesToSkipTableNaming(entity))
                {
                    string tableName = namingOptions.TableNameSource(entity);

                    entity.SetTableName(namingOptions.TableNamingFunction(tableName));
                }

                // Properties
                entity.GetProperties()
                .ToList()
                .ForEach(x => x.SetColumnName(namingOptions.ColumnNamingFunction(x.GetColumnName())));

                // Primary and Alternative keys
                entity.GetKeys().ToList().ForEach(x => x.SetName(namingOptions.ConstraintNamingFunction(x.GetName())));

                // Foreign keys
                entity.GetForeignKeys()
                .ToList()
                .ForEach(x => x.SetConstraintName(namingOptions.ConstraintNamingFunction(x.GetConstraintName())));

                // Indices
                entity.GetIndexes()
                .ToList()
                .ForEach(x => x.SetName(namingOptions.ConstraintNamingFunction(x.GetName())));
            }
        }