Использую code-first.
Есть одна сущность
public class Stage
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public virtual ICollection<Motion> Motions { get; set; }
public Stage()
{
Motions = new List<Motion>();
}
}
Есть вторая сущность
public class Motion
{
public int Id { get; set; }
public string Description { get; set; }
public int NextStageId { get; set; }
public virtual Stage NextStage { get; set; }
public int OwnerStageId { get; set; }
public virtual Stage OwnerStage { get; set; }
}
По сути Stage это как узел связанного списка, а Motion это ссылки на эти узлы. Получается, что Stage знает о других узлах только через эти ссылки. Ссылка (Motion) должна знать кому принадлежит (OwnerStage) и ссылаться на другие Stage (NextStage) , у Stage обратной связи через NextStage быть не должно.
Есть настройка
public MotionMapper()
{
this.ToTable("Motion");
this.Property(x => x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Property(x => x.Id).IsRequired();
this.Property(x => x.Description).IsRequired();
this.HasRequired(x => x.OwnerStage)
.WithMany(x => x.Motions)
.HasForeignKey(x => x.OwnerStageId);
this.HasOptional(x => x.NextStage)
.WithMany(); // Вот тут я теряюсь что писать, перепробовал много вариантов)
}
База генериться не хочет. Комментирую NextStage в Motion - все нормально. Значит дело именно в этом поле.
Помогите разобраться как там настроить все это дело)