Naming columns in self referencing virtual properties
If I understand your question correctly you just need an ordinary many-to-many mapping with Fluent API:
modelBuilder.Entity<Element>()
.HasMany(e => e.Parent)
.WithMany(e => e.Child)
.Map(m => {
m.ToTable("ElementMap"); // name of the link table
m.MapLeftKey("ParentID");
m.MapRightKey("ChildID");
});
I would expect that the generated migration will respect this mapping and use the supplied table and column names.