Coleção muitos para muitos da mesma entidade, com relacionamento bidirecional
Suponha que eu tenho uma entidade de widget e desejo rastrear outros widgets adjacentes a cada um. Se o primeiro widget for adjacente ao segundo, o inverso também será verdadeiro - o segundo será adjacente ao primeiro.
Idealmente, eu teria uma coleção única na entidade e poderia configurá-la fluentemente para esse tipo de relacionamento.
public class Widget
{
// ...
public virtual ICollection<Widget> Adjacent { get; set; }
}
No entanto, quando eu tento isso ...
modelBuilder.Entity<Widget>
.HasMany(w => w.Adjacent)
.WithMany(w => w.Adjacent);
... O Entity Framework não gosta nada disso.
A propriedade de navegação 'Adjacente' declarada no tipo 'Widget' não pode ser inversa.
Existe uma maneira de configurar a entidade que atinge esse objetivo, ou eu vou ficar preso criando propriedades de navegação de coleção pai / filho ou contêineres de relacionamento separados?