Как создать модель без использования Entity Framework в C #? - PullRequest
1 голос
/ 09 марта 2019

Мне нужно знать, как реализовать отношения в модели без использования Entity Framework в C #.

enter image description here

Пожалуйста, дайте мне решение, используя эту диаграмму ER.

class Student
        {
            public int studentId { get; set; }
            public string studentName { get; set; }
            public DateTime DOB { get; set; }
            public string street { get; set; }
            public string city { get; set; }
            public string state { get; set; }
            public string PIN { get; set; }
            public int courseId { get; set; }
            public string courseName { get; set; }
        }
    class Course
        {
            public int courseId { get; set; }
            public string courseName { get; set; }
        }

    class StudentHobby
        {
            public int studentId { get; set; }
            public string studentName { get; set; }
            public string hobby { get; set; }
        }
    class Lecturer
        {
            public int lecturerId { get; set; }
            public string lecturerName { get; set; }
            public int courseId { get; set; }
            public string courseName { get; set; }
        }

1 Ответ

1 голос
/ 09 марта 2019

В основном, ваши классы сущностей всегда должны содержать

  • свои собственные "полезные" данные - например, атрибуты этой сущности, такие как имя и другая информация самого лектора

  • атрибуты внешнего ключа для связи с другими объектами, например, CourseId, но не более

Основной принцип реляционного проектирования - убедиться, что ваши отношения установлены, и вы устраняете все дублирование данных -> например, не сохраните CourseName с классом Lecturer, так как если вы захотите, то если имя курса изменится, вы должны начать обновлять его не только в таблице Course, но и в все экземпляры Lecturer и, возможно, Student строк, которые используют этот курс. Это именно то, что вы пытаетесь избежать.

Идея такова: с атрибутом внешнего ключа CourseId, хранящимся в Lecturer, если вы загружаете лектора, вы также можете взять атрибут FK, а затем загрузить соответствующий Course и получить все его детали. - без необходимости дублировать информацию в нескольких таблицах / объектах.

Если вы захотите использовать Entity Framework , вы можете очень легко включить эти ссылки fk в качестве "свойств навигации" в ваших классах:

public class Lecturer
{
     // Lecturer's own attributes
     public int lecturerId { get; set; }
     public string lecturerName { get; set; }

     // FK attribute
     public int courseId { get; set; }

     // FK navigation property
     public virtual Course Course { get; set; }
}

и затем «магия EF» автоматически выполняет эту «загрузку» в фоновом режиме.

Теперь в своем коде вы можете загрузить Lecturer, а с помощью навигации по его свойству Course вы также можете получить доступ ко всем деталям Course - без дублирования каких-либо данных.

...