实体框架连接的记录在列表中变为空

时间:2013-02-24 19:22:15

标签: entity-framework-4

这是一个难以描述的问题。 我有一个包含表格测试和表格学生以及ScoreCards的数据库。 每个考试都有一个学生的FK,同样也用于记分卡。

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

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

liScoreCards.Add(SC);

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

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

列表中的

:liScoreCards - 上一个SC对象。学生变为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);
}

}

0 个答案:

没有答案