EntityFramework-Reverse-POCO-Code-First-Generator icon indicating copy to clipboard operation
EntityFramework-Reverse-POCO-Code-First-Generator copied to clipboard

Add option to move poco configuration into OnModelCreating

Open sjh37 opened this issue 5 years ago • 0 comments

Thanks to Thad Lowry for this suggestion.

Add an option so we can generated poco configuration code from separate classes into OnModelCreating.

From this:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.ApplyConfiguration(new ManyToManyConfiguration());
}


// ManyToMany
public partial class ManyToManyConfiguration : IEntityTypeConfiguration<ManyToMany>
{
    public void Configure(EntityTypeBuilder<ManyToMany> builder)
    {
        builder.ToTable("ManyToMany", "dbo");
        builder.HasKey(x => new { x.ManyId, x.ToManyId }).HasName("PK_ManyToMany").IsClustered();

        builder.Property(x => x.ManyId).HasColumnName(@"ManyId").HasColumnType("int").IsRequired().ValueGeneratedNever();
        builder.Property(x => x.ToManyId).HasColumnName(@"ToManyId").HasColumnType("int").IsRequired().ValueGeneratedNever();

        // Foreign keys
        builder.HasOne(a => a.Many).WithMany(b => b.ManyToManies).HasForeignKey(c => c.ManyId).OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("FK_Many_ToMany_ManyId");
        builder.HasOne(a => a.ToMany).WithMany(b => b.ManyToManies).HasForeignKey(c => c.ToManyId).OnDelete(DeleteBehavior.ClientSetNull).HasConstraintName("FK_Many_ToMany_ToManyId");

        InitializePartial(builder);
    }

    partial void InitializePartial(EntityTypeBuilder<ManyToMany> builder);
}

to this:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<ManyToMany>(entity =>
    {
        entity.HasKey(e => new { e.ManyId, e.ToManyId });

        entity.HasComment("This is a Many to Many");

        entity.HasOne(d => d.Many)
            .WithMany(p => p.ManyToMany)
            .HasForeignKey(d => d.ManyId)
            .OnDelete(DeleteBehavior.ClientSetNull)
            .HasConstraintName("FK_Many_ToMany_ManyId");

        entity.HasOne(d => d.ToMany)
            .WithMany(p => p.ManyToMany)
            .HasForeignKey(d => d.ToManyId)
            .OnDelete(DeleteBehavior.ClientSetNull)
            .HasConstraintName("FK_Many_ToMany_ToManyId");
    });
    .  .  . 
}

sjh37 avatar Jun 30 '20 17:06 sjh37