/// <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)); }
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)); }
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; }
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); }
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)); }
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); }
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; }