У меня есть четыре модели, которые являются семьей, матерью, отцом, учеником, я пытаюсь связать отца & Мать & Студент с семейной таблицей и таблицей учеников, связанной с таблицами Мать и Отец. Здесь Семейная таблица содержит информацию о семье. Таблицы матери и отца содержат их личную информацию, а таблица Student содержит информацию о студентах + MotherID и FatherID. Это означает, что «Семейный стол» был основным столом для «Матери и отца», «Студенческая таблица». Материнскую таблицу «Матери» и таблицу «Отец отца» ссылались на «Студенческий стол».Код EF Сначала с отношениями «один-ко-многим» и «многие-ко-многим»? вызывают циклы или несколько каскадных путей
Я использую MVC 4 Entity Framework Code First,
Это мои модели классов.
public class Family
{
public int FamilyID { get; set; }
public string FamilyName { get; set; }
public virtual ICollection<Mother> Mothers { get; set; }
public virtual ICollection<Father> Fathers { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Mother
{
public int MotherID { get; set; }
public int FamilyID { get; set; }
public string FirstName { get; set; }
public string SSN { get; set; }
public virtual Family Families { get; set; }
public virtual ICollection<Student> Students{ get; set; }
}
public class Father
{
public int FatherID { get; set; }
public int FamilyID { get; set; }
public string FirstName { get; set; }
public string SSN { get; set; }
public virtual Family Families { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Student
{
public int StudentID { get; set; }
public int FamilyID { get; set; }
public int MotherID { get; set; }
public int FatherID { get; set; }
public string FirstName { get; set; }
public string SSN { get; set; }
public virtual Family Families { get; set; }
public virtual Mother Mothers { get; set; }
public virtual Father Fathers { get; set; }
}
База данных Context Класс:
public class MYContext:DbContext
{
public DbSet<Family> Families { get; set; }
public DbSet<Mother> Mothers { get; set; }
public DbSet<Father> Fathers { get; set; }
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
//modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
//base.OnModelCreating(modelBuilder);
}
}
После написания выше код, я просто побежал следующие команды на менеджере пакетов консоли.
PM> Add-Migration InitialContext
Для меня создан класс InitialContext.cs.
PM> Update-Database -Verbose
Это дает мне ошибку ниже
Introducing FOREIGN KEY constraint 'FK_dbo.Student_dbo.Mother_MotherID' on table
'Student' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON
UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
Что я делаю не так ??
Почему я получаю эту ошибку ??? Пожалуйста, помогите мне!
Каков правильный способ реализации отношений «один ко многим» и «многие ко многим» с использованием кода EF? Прошу вас посоветуйте с этим примером.