示例#1
0
        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;
            }
        }
示例#3
0
        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");
                }
            }
        }
示例#5
0
        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);
            });
        }
示例#6
0
        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");
                }
            }
        }
示例#7
0
        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;
            }
        }