Краткий ответ: ВЫБЕРИТЕ и сопоставьте значения идентификатора. Или программно -
foreach(Student s in yourstudentList)
{
foreach(StudentToCourse stc in s.StudentToCourse)
{
if(stc.StudentId = s.Id)
//this is one you want, do something with it
}
}
Лучший ответ:
Сначала давайте посмотрим на вашу модель...
Представьте базовую структуру базы данных.
Ваша средняя таблица называется подстановкой.
На самом деле вам не нужен ни весь объект Student, ни весь объект Course в нем. Кроме того, вашему объекту Course не нужно знать ни о каком другом объекте.
Если вы можете представить себе три таблицы в своей базе данных, вы можете понять, как логически связать Студента с Курсом через три таблицы.
Ваша модель все еще неполная. В вашем приложении вам по-прежнему нужен контейнер, в данном случае это List courseIds. Таким образом, вашему студенту не нужно заботиться обо всех записях в таблице поиска студентов/курсов, а только о тех, которые применимы к конкретному студенту. И у вас есть легкодоступный объект для извлечения данных или отправки обновлений в базу данных.
При первоначальном заполнении коллекции courseIds вы должны выполнить
SELECT FROM StudentToCourse where StudentId = x
Затем вы можете ПРИСОЕДИНИТЬСЯ к таблице курсов, чтобы получить такие значения, как название курса. Если вы обнаружите, что вам нужно выполнять много таких поисков, вы можете кэшировать свой список курсов и снизить трафик базы данных за счет некоторой оперативной памяти.
Каждый раз, когда вы создаете нового студента, вы хотите заполнить его список идентификаторов курса, а при фиксации студента в базе данных вы сохраните свою таблицу поиска.
Это делает ваши объекты максимально легкими, сохраняя при этом их отношения.
Существуют различные способы написания оператора SELECT в вашей среде разработки, поиск их и поиск того, который вам нравится (или который соответствует текущей практике вашей компании), и привыкнуть к постоянному использованию одного и того же. Это сделает ваш код более читабельным и управляемым.
person
user11705765
schedule
27.06.2019