изменить отношения с ядром структуры сущности - PullRequest
0 голосов
/ 24 февраля 2020

Я новичок в Entity Framework Core и Code First. В моем подходе к дизайну я допустил ошибку между двумя объектами.

Я создал таблицу subCourses , которая в настоящее время настроена так, чтобы иметь отношения один ко многим с Инструкторами . Это означало бы, что на под-курсе может быть много инструкторов, в этом и заключается моя ошибка, я хочу, чтобы у преподавателя было много под-курсов.

Я еще не создал никаких контроллеров или сгенерировал какие-либо просматривает или заполняет любые данные в этих таблицах.

Это сокращенный код Модели для подкурса:

public class SubCourse
{

    //Constructor
    public SubCourse()
    {
        Instructors = new List<Instructor>();
    }

    [Key]
    public int SubCourseID { get; set; }


    [Column(TypeName = "nvarchar(10)")]
    [DisplayName(" Local Course Name")]
    [Required(ErrorMessage = "You must fill in Local Sub Course name.")]
    public string LocalCourseCode { get; set; }

    public List<Instructor> Instructors { get; set; }
}

Это сокращенный код Модели для Инструкторов:

public class Instructor
{
    [Key]
    public int InstructorID { get; set; }

    [MaxLength(50)]
    [Column(TypeName = "nvarchar(50)")]
    [DisplayName("First Name")]
    [Required(ErrorMessage = "You must fill in the first name.")]
    public string FirstName { get; set; }

    [MaxLength(50)]
    [Column(TypeName = "nvarchar(50)")]
    [DisplayName("Last Name")]
    [Required(ErrorMessage = "You must fill in the last name.")]
    public string LastName { get; set; }

    public SubCourse SubCourse { get; set; }
    public int SubCourseID { get; set; }

}

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

Add-Migration ChangeRelationInstructorSubCourse

Обновление базы данных

Спасибо

1 Ответ

1 голос
/ 25 февраля 2020

Если вы хотите создать отношение «один ко многим» между Instructor и SubCourse, вы можете просто изменить дизайн модели, как показано ниже:

 public class SubCourse
{

    [Key]
    public int SubCourseID { get; set; }

    [Column(TypeName = "nvarchar(10)")]
    [DisplayName(" Local Course Name")]
    [Required(ErrorMessage = "You must fill in Local Sub Course name.")]
    public string LocalCourseCode { get; set; }

    public int InstructorID { get; set; }
    public Instructor Instructor { get; set; }
}

public class Instructor
{
    public Instructor()
    {
        SubCourses = new List<SubCourse>();
    }

    [Key]
    public int InstructorID { get; set; }

    [MaxLength(50)]
    [Column(TypeName = "nvarchar(50)")]
    [DisplayName("First Name")]
    [Required(ErrorMessage = "You must fill in the first name.")]
    public string FirstName { get; set; }

    [MaxLength(50)]
    [Column(TypeName = "nvarchar(50)")]
    [DisplayName("Last Name")]
    [Required(ErrorMessage = "You must fill in the last name.")]
    public string LastName { get; set; }

    public List<SubCourse> SubCourses { get; set; }
}

Затем создайте новый файл миграции, который содержит новые отношения в Консоль диспетчера пакетов

Add-Migration ChangeRelationInstructorSubCourse

Обновление новых отношений в базе данных

Update-Database

Для отношений в EF Core вы можете потратить некоторое время на изучение официального документа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...