Основной конец этой ассоциации должен быть явно сконфигурирован в подходе кода MVC asp.net в первую очередь для операций типа «один-ко-многим». - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в коде. Первое приближение только что начал изучать. Я создал два класса, но показал ошибку, подобную этой. Что нужно изменить в классах, которые имеют отношения один к *.Два класса:

[Table("Department")]
    public class Department
    {
        [Key]
        public int Did { get; set; }
        public int DName { get; set; }
        public virtual Student student { get; set; }
    }

[Table("Student")]
    public class Student
    {
        [Key]
        public int id { get; set; }
        public string name { get; set; }
        public int age { get; set; }
        public int? department { get; set; }
        [ForeignKey("department")]
        public virtual Department Department { get; set; }
    }

Мой класс контекста:

 public class StudentContext : DbContext
    {
        public StudentContext()

            :base("StudentContext")
        { }
        public DbSet<Student> students { get; set; }
        public DbSet<Department> departments { get; set; }


    }

1 Ответ

0 голосов
/ 31 мая 2018

Ну, во-первых, у вас есть 2 свойства отдела.Вы, вероятно, хотите, чтобы внешний ключ был DepartmentId.Тогда вам нужна коллекция студентов от 1 до многих.

// No need for a table attribute if it matches the class name
public class Department
{
    [Key]  // If you called this Id or DepartmentId you would not need the attribute
    public int Did { get; set; }
    public int DName { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}

public class Student
{
    [Key] 
    public int id { get; set; }
    public string name { get; set; }
    public int age { get; set; }
    // EF will make this relationship automatically. But if you like you can keep FK attribute.
    [ForeignKey("Department")]
    public int? DepartmentId { get; set; }
    public virtual Department Department { get; set; }
}
...