Как создать модель без использования Entity Framework на C #?

#c# #orm #entity-relationship

#c# #orm #сущность-отношение

Вопрос:

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

введите описание изображения здесь

Пожалуйста, дайте мне решение, используя эту диаграмму 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. ПОКАЖИТЕ НАМ , что ВЫ уже пробовали! SO — это не бесплатный сервис «напиши мой код за меня» — ВАМ сначала нужно приложить усилия, показать нам, что у вас есть и где вы застряли — тогда мы поможем …..

2. Я совершенно новичок в программировании. Я могу писать код, но дело в том, что я хочу изучить наилучшую практику.

3. Что ж, тогда начните с кодирования четырех объектов, которые вы показываете на диаграмме ER, как классов C #, и разместите их здесь — тогда мы сможем сделать еще один шаг и представить взаимосвязи

4. Я не знаю, как работать с внешним ключом в модели… Нужно ли мне иметь отдельные свойства или я могу вызвать класс… Я сомневаюсь в этих

5. Почему вы специально исключаете Entity Framework здесь? Это намного упростило бы задачу…..

Ответ №1:

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

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

  • атрибуты внешнего ключа для ссылки на другие объекты, например 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 — без дублирования каких-либо данных.