Не могу думать о запросе, который решает это много ко многим - PullRequest
2 голосов
/ 29 мая 2011

У меня сложная ситуация.
Создан EF с «Model first» и вот мои EF-сущности:

<b>-Course Lecturer many to many relationship-</b>

  <b>Course</b>               <b>Lecturer</b>  
------------      -------------------           <i>Column <b>IS_PROFESOR</b> is bool      
  +ID                 +ID                       value that makes <b>Lecturer</b>:
  +NAME               +FIRSTNAME                true: <b>Course Profesor</b> 
-----------           +LASTNAME                 false: <b>Course Asistent</b>
-LECTURERS            +IS_PROFESOR
-----------       -------------------
                      -COURSES                  </i>
                  -------------------  

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

---------------------------------------------------------------------------------
    <b>Course</b>     |   <b>Professor</b>      |    <b>Assistants</b>     |          <b>Actions</b>
---------------------------------------------------------------------------------
    course 1   | course professor |assistant 1      |     edit update delete
               |                  |assistant 2      |     edit update delete
---------------------------------------------------------------------------------
    course 2   | course professor |assistant 1      |     edit update delete
---------------------------------------------------------------------------------
    course 3   | course professor |assistant 1      |     edit update delete
               |                  |assistant 2      |     edit update delete
               |                  |assistant 3      |     edit update delete
---------------------------------------------------------------------------------

Как вы видите, мне нужен запрос, который заполнит некоторую новую модель представления таким образом, чтобы она могла отличить Профессор курса от Список помощников курса . Модель будет (верно?):

public class CourseView<br> {<br> public int CourseID { get; set; } public string CourseName { get; set; }<br> public string ProfessorName { get; set; }<br> public List AssistantNames { get; set; } // <i>Or it should be List of Assistants</i><br> } </p> <p> Я никак не могу придумать какое-то рациональное решение этой проблемы с моими собственными навыками, любой помощью, рекомендацией или предложением, что будет много значить для меня, спасибо за каждую секунду, когда я смотрю на это.

1 Ответ

1 голос
/ 29 мая 2011

Возможно, вы захотите повторить свои EF-сущности. Прямо сейчас вы говорите, что на каждом курсе есть несколько преподавателей, и преподаватель - это либо профессор, либо ассистент. Но ваш индексный курс, кажется, указывает на то, что на каждом курсе должен быть один профессор и несколько ассистентов. Вы также указываете, что лектор может быть только профессором или ассистентом. Сначала я хотел бы убедиться, что профессор одного курса не может быть помощником другого. Если это так, то я бы создал отдельную таблицу (или организацию) для профессоров и ассистентов. У каждого курса есть один профессор и несколько ассистентов. С другой стороны, если профессора могут быть ассистентами, то вам нужно убрать обозначение профессора из лектора и встроить его в отношение к курсам, чтобы у каждого курса был один лектор, который является профессором, и список лекторов, которые являются ассистентами.

Однако, если вы хотите продолжить текущую настройку, вы сможете заполнить желаемый вид примерно так

var courseViews = from c in db.Courses
                  select new CourseView()
                  {
                      CourseID = c.ID,
                      ProfessorName = (from l in c.Leturers 
                                       where l.Is_Professor 
                                       select l.Name).FirstOrDefault(),
                      AssistantNames = (from l in c.Leturers 
                                        where !l.Is_Professor 
                                        select l.Name).ToList()
                  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...