Entity Framework Core Many to Many change navigation property names Entity Framework Core Many to Many change navigation property names postgresql postgresql

Entity Framework Core Many to Many change navigation property names


Interesting bug, consider posting it to EF Core GitHub issue tracker.

By idea what you have tried should do it

modelBuilder.Entity<SystemUser>()    .HasMany(x => x.LogBooks)    .WithMany(x => x.SystemUsers)    .UsingEntity<Dictionary<string, object>>("LogBookSystemUsers",        x => x.HasOne<LogBook>().WithMany().HasForeignKey("LogBookId"),        x => x.HasOne<SystemUser>().WithMany().HasForeignKey("SystemUserId"),        x => x.ToTable("LogBookSystemUsers", "LogBooks"));

And it works for any other FK property names except the {RelatedEntity}Id when related entity PK property is called ID.

As workaround until it gets fixed, define explicitly the desired join entity properties before configuring the relationship:

// add thismodelBuilder.SharedTypeEntity<Dictionary<string, object>>("LogBookSystemUsers", builder =>{    builder.Property<int>("LogBookId");    builder.Property<int>("SystemUserId");});// same as the originalmodelBuilder.Entity<SystemUser>()    .HasMany(x => x.LogBooks)    .WithMany(x => x.SystemUsers)    .UsingEntity<Dictionary<string, object>>("LogBookSystemUsers",        x => x.HasOne<LogBook>().WithMany().HasForeignKey("LogBookId"),        x => x.HasOne<SystemUser>().WithMany().HasForeignKey("SystemUserId"),        x => x.ToTable("LogBookSystemUsers", "LogBooks"));