/// <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>
        public virtual IModel Create(DatabaseModel databaseModel, bool useDatabaseNames)
        {
            if (databaseModel == null)
            {
                throw new ArgumentNullException(nameof(databaseModel));
            }

            var modelBuilder = new ModelBuilder(new ConventionSet());

            _tableNamer = new CSharpUniqueNamer <DatabaseTable>(
                useDatabaseNames
                    ? (Func <DatabaseTable, string>)(t => t.Name)
                    : t => _candidateNamingService.GenerateCandidateIdentifier(t.Name),
                _cSharpUtilities,
                useDatabaseNames
                    ? (Func <string, string>)null
                    : _pluralizer.Singularize);
            _dbSetNamer = new CSharpUniqueNamer <DatabaseTable>(
                useDatabaseNames
                    ? (Func <DatabaseTable, string>)(t => t.Name)
                    : t => _candidateNamingService.GenerateCandidateIdentifier(t.Name),
                _cSharpUtilities,
                useDatabaseNames
                    ? (Func <string, string>)null
                    : _pluralizer.Pluralize);
            _columnNamers     = new Dictionary <DatabaseTable, CSharpUniqueNamer <DatabaseColumn> >();
            _useDatabaseNames = useDatabaseNames;

            VisitDatabaseModel(modelBuilder, databaseModel);

            return(modelBuilder.Model);
        }
        public void Pluralizes_names(string input, string output)
        {
            var fakePluralizer = new RelationalDatabaseModelFactoryTest.FakePluralizer();
            var namer          = new CSharpUniqueNamer <DatabaseTable>(t => t.Name, new CSharpUtilities(), fakePluralizer.Pluralize);
            var table          = new DatabaseTable(new DatabaseModel(), input);

            Assert.Equal(output, namer.GetName(table));
        }
 public void Uses_comparer()
 {
     var namer = new CSharpUniqueNamer<TableModel>(t => t.Name);
     var table1 = new TableModel { Name = "A B C" };
     var table2 = new TableModel { Name = "A_B_C" };
     Assert.Equal("A_B_C", namer.GetName(table1));
     Assert.Equal("A_B_C1", namer.GetName(table2));
 }
        public void Uses_comparer()
        {
            var namer    = new CSharpUniqueNamer <DatabaseTable>(t => t.Name, new CSharpUtilities(), null);
            var database = new DatabaseModel();
            var table1   = new DatabaseTable(database, "A B C");
            var table2   = new DatabaseTable(database, "A_B_C");

            Assert.Equal("A_B_C", namer.GetName(table1));
            Assert.Equal("A_B_C1", namer.GetName(table2));
        }
Esempio n. 5
0
        public void Singularizes_names(string input, string output)
        {
            var pluralizer = new HumanizerPluralizer();
            var namer      = new CSharpUniqueNamer <DatabaseTable>(t => t.Name, new CSharpUtilities(), pluralizer.Singularize);
            var table      = new DatabaseTable {
                Database = new DatabaseModel(), Name = input
            };

            Assert.Equal(output, namer.GetName(table));
        }
Esempio n. 6
0
        public void Pluralizes_names(string input, string output)
        {
            var fakePluralizer = new FakePluralizer();
            var namer          = new CSharpUniqueNamer <DatabaseTable>(t => t.Name, new CSharpUtilities(), fakePluralizer.Pluralize);
            var table          = new DatabaseTable {
                Name = input
            };

            Assert.Equal(output, namer.GetName(table));
        }
        public void Returns_unique_name_for_type()
        {
            var namer  = new CSharpUniqueNamer <DatabaseColumn>(s => s.Name, new CSharpUtilities(), null);
            var table  = new DatabaseTable(new DatabaseModel(), "foo");
            var input1 = new DatabaseColumn(table, "Id", "int");
            var input2 = new DatabaseColumn(table, "Id", "int");

            Assert.Equal("Id", namer.GetName(input1));
            Assert.Equal("Id", namer.GetName(input1));

            Assert.Equal("Id1", namer.GetName(input2));
        }
        public void Uses_comparer()
        {
            var namer  = new CSharpUniqueNamer <TableModel>(t => t.Name);
            var table1 = new TableModel {
                Name = "A B C"
            };
            var table2 = new TableModel {
                Name = "A_B_C"
            };

            Assert.Equal("A_B_C", namer.GetName(table1));
            Assert.Equal("A_B_C1", namer.GetName(table2));
        }
        protected virtual IModel CreateFromDatabaseModel([NotNull] DatabaseModel databaseModel)
        {
            Check.NotNull(databaseModel, nameof(databaseModel));

            var modelBuilder = new ModelBuilder(new ConventionSet());

            _tableNamer = new CSharpUniqueNamer<TableModel>(t => t.Name);
            _columnNamers = new Dictionary<TableModel, CSharpUniqueNamer<ColumnModel>>();

            VisitDatabaseModel(modelBuilder, databaseModel);

            return modelBuilder.Model;
        }
Esempio n. 10
0
        protected virtual IModel CreateFromDatabaseModel([NotNull] DatabaseModel databaseModel)
        {
            Check.NotNull(databaseModel, nameof(databaseModel));

            var modelBuilder = new ModelBuilder(new ConventionSet());

            _tableNamer   = new CSharpUniqueNamer <TableModel>(t => CandidateNamingService.GenerateCandidateIdentifier(t.Name));
            _columnNamers = new Dictionary <TableModel, CSharpUniqueNamer <ColumnModel> >();

            VisitDatabaseModel(modelBuilder, databaseModel);

            return(modelBuilder.Model);
        }
Esempio n. 11
0
        public void Returns_unique_name_for_type()
        {
            var namer  = new CSharpUniqueNamer <DatabaseColumn>(s => s.Name, new CSharpUtilities(), null);
            var input1 = new DatabaseColumn {
                Name = "Id"
            };
            var input2 = new DatabaseColumn {
                Name = "Id"
            };

            Assert.Equal("Id", namer.GetName(input1));
            Assert.Equal("Id", namer.GetName(input1));

            Assert.Equal("Id1", namer.GetName(input2));
        }
        public void Returns_unique_name_for_type()
        {
            var namer  = new CSharpUniqueNamer <ColumnModel>(s => s.Name);
            var input1 = new ColumnModel
            {
                Name = "Id"
            };
            var input2 = new ColumnModel
            {
                Name = "Id"
            };

            Assert.Equal("Id", namer.GetName(input1));
            Assert.Equal("Id", namer.GetName(input1));

            Assert.Equal("Id1", namer.GetName(input2));
        }
        public void Returns_unique_name_for_type()
        {
            var namer = new CSharpUniqueNamer<ColumnModel>(s => s.Name);
            var input1 = new ColumnModel
            {
                Name = "Id"
            };
            var input2 = new ColumnModel
            {
                Name = "Id"
            };

            Assert.Equal("Id", namer.GetName(input1));
            Assert.Equal("Id", namer.GetName(input1));

            Assert.Equal("Id1", namer.GetName(input2));
        }
Esempio n. 14
0
        public void Returns_unique_name_for_type()
        {
            var namer = new CSharpUniqueNamer <DatabaseColumn>(s => s.Name, new CSharpUtilities(), null);
            var table = new DatabaseTable {
                Database = new DatabaseModel(), Name = "foo"
            };
            var input1 = new DatabaseColumn {
                Table = table, Name = "Id", StoreType = "int"
            };
            var input2 = new DatabaseColumn {
                Table = table, Name = "Id", StoreType = "int"
            };

            Assert.Equal("Id", namer.GetName(input1));
            Assert.Equal("Id", namer.GetName(input1));

            Assert.Equal("Id1", namer.GetName(input2));
        }
        /// <summary>
        ///     This is an internal API that supports the Entity Framework Core infrastructure and not subject to
        ///     the same compatibility standards as public APIs. It may be changed or removed without notice in
        ///     any release. You should only use it directly in your code with extreme caution and knowing that
        ///     doing so can result in application failures when updating to a new Entity Framework Core release.
        /// </summary>
        public virtual IModel Create(DatabaseModel databaseModel, ModelReverseEngineerOptions options)
        {
            Check.NotNull(databaseModel, nameof(databaseModel));
            Check.NotNull(options, nameof(options));

            var modelBuilder = new ModelBuilder();

            _tableNamer = new CSharpUniqueNamer <DatabaseTable>(
                options.UseDatabaseNames
                    ? (Func <DatabaseTable, string>)(t => t.Schema + '_' + t.Name)
                    : t =>
            {
                t.Name = t.Schema + '_' + t.Name;
                return(_candidateNamingService.GenerateCandidateIdentifier(t));
            },
                _cSharpUtilities,
                options.NoPluralize
                    ? (Func <string, string>)null
                    : _pluralizer.Singularize);
            _dbSetNamer = new CSharpUniqueNamer <DatabaseTable>(
                options.UseDatabaseNames
                    ? (Func <DatabaseTable, string>)(t => t.Schema + '_' + t.Name)
                    : t =>
            {
                //t.Name = t.Schema + '_' + t.Name;
                return(_candidateNamingService.GenerateCandidateIdentifier(t));
            },
                _cSharpUtilities,
                options.NoPluralize
                    ? (Func <string, string>)null
                    : _pluralizer.Pluralize);
            _columnNamers = new Dictionary <DatabaseTable, CSharpUniqueNamer <DatabaseColumn> >();
            _options      = options;

            VisitDatabaseModel(modelBuilder, databaseModel);

            return(modelBuilder.Model);
        }
Esempio n. 16
0
        protected virtual IModel CreateFromDatabaseModel([NotNull] DatabaseModel databaseModel)
        {
            Check.NotNull(databaseModel, nameof(databaseModel));

            var modelBuilder = new ModelBuilder(new ConventionSet());

            _tableNamer   = new CSharpUniqueNamer <TableModel>(t => t.Name);
            _columnNamers = new Dictionary <TableModel, CSharpUniqueNamer <ColumnModel> >();

            VisitDatabaseModel(modelBuilder, databaseModel);

            if (!string.IsNullOrEmpty(databaseModel.DefaultSchemaName))
            {
                modelBuilder.HasDefaultSchema(databaseModel.DefaultSchemaName);
            }

            if (!string.IsNullOrEmpty(databaseModel.DatabaseName))
            {
                modelBuilder.Model.Relational().DatabaseName = databaseModel.DatabaseName;
            }

            return(modelBuilder.Model);
        }
        protected virtual IModel CreateFromDatabaseModel([NotNull] DatabaseModel databaseModel)
        {
            Check.NotNull(databaseModel, nameof(databaseModel));

            var modelBuilder = new ModelBuilder(new ConventionSet());

            _tableNamer = new CSharpUniqueNamer<TableModel>(t => t.Name);
            _columnNamers = new Dictionary<TableModel, CSharpUniqueNamer<ColumnModel>>();

            VisitDatabaseModel(modelBuilder, databaseModel);

            if (!string.IsNullOrEmpty(databaseModel.DefaultSchemaName))
            {
                modelBuilder.HasDefaultSchema(databaseModel.DefaultSchemaName);
            }

            if (!string.IsNullOrEmpty(databaseModel.DatabaseName))
            {
                modelBuilder.Model.Relational().DatabaseName = databaseModel.DatabaseName;
            }

            return modelBuilder.Model;
        }