protected override void OnModelCreating(ModelBuilder modelBuilder) { var mapper = new NpgsqlSnakeCaseNameTranslator(); var types = modelBuilder.Model.GetEntityTypes().ToList(); // Refer to tables in snake_case internally types.ForEach(e => e.Relational().TableName = mapper.TranslateMemberName(e.Relational().TableName)); // Refer to columns in snake_case internally types.SelectMany(e => e.GetProperties()) .ToList() .ForEach(p => p.Relational().ColumnName = mapper.TranslateMemberName(p.Relational().ColumnName)); }
public static void ApplyToModelBuilder(DatabaseFacade databaseFacade, ModelBuilder modelBuilder) { switch (DbProvider) { case DbProvider.SqlServer: break; case DbProvider.Sqlite: default: var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in modelBuilder.Model.GetEntityTypes()) { foreach (var property in entity.GetProperties()) { var storeObjectIdentifier = StoreObjectIdentifier.Create(property.DeclaringEntityType, StoreObjectType.Table); if (storeObjectIdentifier.HasValue) { property.SetColumnName(mapper.TranslateMemberName(property.GetColumnName(storeObjectIdentifier.Value))); } } entity.SetTableName(mapper.TranslateTypeName(entity.GetTableName())); } break; } }
public void SnakeCaseTest_ManyWithNpgsql() { var testVals = GetTestVals(); foreach (var testVal in testVals) { var trans = new NpgsqlSnakeCaseNameTranslator(false); Assert.AreEqual(testVal.Item2, trans.TranslateMemberName(testVal.Item1)); } }
public static void PostgresModelCreating(this ModelBuilder builder) { var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in builder.Model.GetEntityTypes()) { // modify column names foreach (var property in entity.GetProperties()) { property.SetColumnName(mapper.TranslateMemberName(property.GetColumnName(StoreObjectIdentifier.Table(entity.GetTableName(), null)))); } // modify table name entity.SetTableName(mapper.TranslateMemberName(entity.GetTableName())); // modify keys names foreach (var key in entity.GetKeys()) { key.SetName(mapper.TranslateMemberName(key.GetName())); } // modify foreign keys names foreach (var key in entity.GetForeignKeys()) { key.SetConstraintName(mapper.TranslateMemberName(key.GetConstraintName())); } // modify indexes names foreach (var index in entity.GetIndexes()) { index.SetDatabaseName(mapper.TranslateMemberName(index.GetDatabaseName())); } // move asp_net tables into schema 'identity' if (entity.GetTableName().StartsWith("asp_net_")) { entity.SetTableName(entity.GetTableName().Replace("asp_net_", string.Empty)); entity.SetSchema("identity"); } } }
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); if (modelBuilder == null) { return; } var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in modelBuilder.Model.GetEntityTypes()) { foreach (var property in entity.GetProperties()) { modelBuilder.Entity(entity.Name).Property(property.Name).HasColumnName(mapper.TranslateMemberName(property.Name)); //.ToTable(mapper.TranslateMemberName(entity.Name)); //property.Relational().ColumnName = mapper.TranslateMemberName(property.Name); } //entity.Relational().TableName = mapper.TranslateMemberName(entity.Relational().TableName); modelBuilder.Entity(entity.Name).ToTable(mapper.TranslateMemberName(entity.GetTableName())); } modelBuilder.Entity <Project>(p => { p.HasOne(p => p.Creator).WithMany(du => du.CreatedProjects); p.HasOne(p => p.Owner).WithMany(du => du.OwnedProjects); p.HasIndex(p => new { p.Name, p.CreatorId }).IsUnique(); }); modelBuilder.Entity <PostTag>().Ignore(x => x.Post).HasKey(x => new { x.PostId, x.TagName }); modelBuilder.Entity <ProjectAdmin>(pa => { pa.HasKey(t => new { t.ProjectId, t.AdminId }); pa.HasOne(pa => pa.Project).WithMany(a => a.Admins).HasForeignKey(pa => pa.ProjectId); pa.HasOne(pa => pa.Admin).WithMany(p => p.AdminedProjects).HasForeignKey(pa => pa.AdminId); }); modelBuilder.Entity <ProjectMaintainer>(pm => { pm.HasKey(t => new { t.ProjectId, t.MaintainerId }); pm.HasOne(pm => pm.Project).WithMany(a => a.Maintainers).HasForeignKey(pm => pm.ProjectId); pm.HasOne(pm => pm.Maintainer).WithMany(p => p.MaintainedProjects).HasForeignKey(pm => pm.MaintainerId); }); modelBuilder.Entity <IssueIssueType>(iit => { iit.HasKey(t => new { t.IssueId, t.IssueTypeId }); iit.HasOne(pi => pi.Issue).WithMany(i => i.Types).HasForeignKey(pi => pi.IssueId); iit.HasOne(pi => pi.IssueType).WithMany(it => it.Issues).HasForeignKey(pi => pi.IssueTypeId); }); }
private void ApplySnakeCaseNames(ModelBuilder modelBuilder) { var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in modelBuilder.Model.GetEntityTypes()) { // modify column names foreach (var property in entity.GetProperties()) { property.SetColumnName(mapper.TranslateMemberName(property.GetColumnName())); } // modify table name entity.SetTableName(mapper.TranslateMemberName(entity.GetTableName())); // move asp_net tables into schema 'identity' if (entity.GetTableName().StartsWith("asp_net_")) { entity.SetTableName(entity.GetTableName().Replace("asp_net_", string.Empty)); entity.SetSchema("identity"); } } }
public static void ApplySnakeCaseNames(this ModelBuilder modelBuilder) { var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in modelBuilder.Model.GetEntityTypes()) { // modify column names foreach (var property in entity.GetProperties()) { property.Relational().ColumnName = mapper.TranslateMemberName(property.Relational().ColumnName); } // modify table name entity.Relational().TableName = mapper.TranslateMemberName(entity.Relational().TableName); // move asp_net tables into schema 'identity' if (!entity.Relational().TableName.StartsWith("asp_net_")) { continue; } entity.Relational().TableName = entity.Relational().TableName.Replace("asp_net_", string.Empty); entity.Relational().Schema = "identity"; } }
public static void ApplyToModelBuilder(DatabaseFacade databaseFacade, ModelBuilder modelBuilder) { switch (DbProvider) { case DbProvider.SqlServer: break; case DbProvider.Sqlite: default: var mapper = new NpgsqlSnakeCaseNameTranslator(); foreach (var entity in modelBuilder.Model.GetEntityTypes()) { foreach (var property in entity.GetProperties()) { property.SetColumnName(mapper.TranslateMemberName(property.GetColumnName())); } entity.SetTableName(mapper.TranslateTypeName(entity.GetTableName())); } break; } }