Я пытаюсь смоделировать то, что кажется относительно простым реферальным сценарием.Я пытался искать, но я не совсем уверен, как зовут те отношения, которые я ищу, чтобы создать.
Вот объяснение:
Один ученик может направить другого ученика в школу.Поэтому каждый студент может отослать много студентов, и каждый новый студент может быть направлен только одним существующим студентом.
Вот код:
// Model
public class Student
{
public int? ReferralID { get; set; }
public virtual Referral Referral { get; set; }
public virtual ICollection<Referral> Referrals { get; set; }
}
public class Referral
{
public int ReferringStudentID { get; set; }
public virtual Student ReferringStudent { get; set; }
public int ReferredStudentID { get; set; }
public virtual Student ReferredStudent { get; set; }
}
// Context
modelBuilder.Entity<Student>()
.HasOptional(x => x.Referral)
.WithMany()
.HasForeignKey(x => x.ReferralID);
modelBuilder.Entity<Student>()
.HasMany(x => x.Referrals)
.WithRequired(x => x.ReferringStudent)
.HasForeignKey(x => x.ReferringStudentID);
Здесьявляется полученной базой данных:
![Missing a key](https://i.stack.imgur.com/AFAEa.png)
Вопрос:
Что можно сделать, чтобы Entity Framework распознал, что ReferringStudentID долженбыть внешним ключом?Я попытался использовать свободный API, чтобы описать отношения между рефералом и студентом, но результаты те же.Я что-то не так делаю?
Заранее спасибо!:)