0

这是一个很难描述的。我有一个带有表格测试和表格学生以及记分卡的数据库。每个测试都有一个学生的 FK,记分卡也是如此。

学生可以多次参加考试,因此可以有许多指向同一学生的考试记录。

我目前仅在内存中使用记分卡。我有这些记分卡对象的列表:liScoreCard。我遍历所有测试,每次迭代我创建一个新的记分卡对象,最后 - 如果它是最好的 - 我将它添加到列表中(如果不是,我只需更改列表中已经存在的记分卡上的测试数量):

liScoreCards.Add(SC);

如果学生只有一个测试,则列表中的 SC 包含学生对象(当我获得测试列表时,我在查询中使用“Include("Student")”。

如果在以后的测试中我再次找到同一个学生(在以后的测试中),当我这样做时:(将学生对象从测试添加到新的记分卡对象)sc.Student = test.Student

在列表中: liScoreCards - 前一个 SC object.Student 变为 NULL 而不是那里的 Student 对象。

我究竟做错了什么 ?

将学生对象分配给新的 ScroeCard 对象是否有可能将其从存储在列表中的旧记分卡对象中“删除”?

代码示例:

 // Psuedo code:
 liTest = DB.GetTests().Include("Student");
 // Code: 
   List<ScoreCard> liScoreCard = new List<ScoreCard>();

    foreach(Test st in liTest)
    {
ScoreCard SC = new ScoreCard();
SC.Student = st.Student;        // This line makes SC with the same StudentID in liScoreCard have the Student become null.

ScoreCard oldSC = liScoreCard.Find(x->x.StudentID == SC.StudentID);
// Some logic to see which grade is higher)
// either update oldSC or...
liScoreCard.Add(SC);
}

}

4

0 回答 0