Я делаю то же самое, но я не полагаюсь на то, что EF получит правильные ключи, и я делаю это сам.Итак, мой Node
класс выглядит следующим образом:
public class Node
{
public int Id {get;set;}
public int ParentId {get;set;}
public virutal Node Parent {get;set;}
public virtual ICollection<Node> Children {get;set;}
}
И тогда ModelBuilder настраивается следующим образом:
builder.Entity<Node>().HasKey(x => x.Id);
builder.Entity<Node>()
.HasOptional(s => s.Parent)
.WithMany(c => c.Children)
.HasForeignKey(s => s.ParentId);
builder.Entity<Node>().ToTable("Node");