我正在研究一个正在工作的项目,并试图从我们的数据库中获取一个学生的所有课程,但是同一课程不断被添加到列表中,而不是所有课程。我实际上有一个与另一个表有关的查询,该表获取了所有教授的班级,由于某种原因,这是可行的。
数据库中的条目不是重复的。
这是我遇到问题的代码:
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个唯一条目。这是输出的example。学生编号已被删除。
DatabaseStructure看起来像这样:
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; }
}
数据库中的表由以下内容组成: Table Design
答案 0 :(得分:0)
该问题似乎与具有两个主键的表和仅具有一个键的数据库结构有关。
此代码似乎已解决了该问题:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<StuEnrolls>().HasKey(k => new { k.studentID, k.courseID });
}