Почему мой запрос linq добавляет один и тот же элемент в список вместо всех элементов? - PullRequest
1 голос
/ 20 мая 2019

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

Записи в базе данных не являются дубликатами.

Вот код, с которым у меня проблемы:

semester = "SP";
year = "19;
id = "0000001";
var tempCourses = (from b in db2.StuEnrolls where b.studentID == id && b.semester == semester && b.year == year orderby b.courseID select b).ToList();

Я также пробовал это:

var tempCourses = (from b in db2.StuEnrolls
                               where b.studentID == id && b.semester == semester && b.year == year
                               orderby b.courseID
                               select new StuEnrolls
                               {
                                   studentID = b.studentID,
                                   courseID = b.courseID,
                                   year = b.year,
                                   semester = b.semester,
                                   dept = b.dept,
                                   course = b.course,
                                   section = b.section,
                                   sectionTitle = b.sectionTitle,
                                   courseGrade = b.courseGrade,
                                   courseCredits = b.courseCredits
                               }).ToList();

Вот аналогичный код для профессоров, которыеработает:

var tempCourses = (from b in db2.CourseSectionsInstructor where b.instructorID == id orderby b.courseID select b).ToList();

На данный момент я получаю 5 курсов, все те же записи из базы данных.Однако я должен получить 5 уникальных записей.Вот пример вывода.StudentID был отредактирован.

Структура базы данных выглядит следующим образом:

    public partial class StuEnrolls
    {
        public string studentID_courseID
        {
            get
            {
                return studentID + " " + courseID;
            }
        }

        [Key]
        public string studentID { get; set; }

        public string courseID { get; set; }

        public string year { get; set; }

        public string semester { get; set; }

        public string dept { get; set; }

        public string course { get; set; }

        public string section { get; set; }

        public string sectionTitle { get; set; }

        public string courseGrade { get; set; }

        public decimal courseCredits { get; set; }
    }

Таблица в базе данных состоит из: Дизайн таблицы

1 Ответ

0 голосов
/ 21 мая 2019

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

Этот код, похоже, устранил проблему:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Entity<StuEnrolls>().HasKey(k => new { k.studentID, k.courseID });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...