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

Entity framework 4 实体框架连接的记录在列表中变为空,entity-framework-4,Entity Framework 4,这是一个很难描述的问题。 我有一个数据库,里面有表格测试、表格学生和记分卡。 每个测试都有一个学生的FK,记分卡也是如此 学生可以多次参加考试,因此可以有许多指向同一学生的考试记录 我目前只在内存中使用记分卡。 我有一个记分卡对象列表:liScoreCard。 我迭代所有测试,每次迭代我都创建一个新的记分卡对象,最后——如果是最好的——我将其添加到列表中(如果不是,我只是更改列表中已经存在的记分卡上的测试数量): 添加(SC) 如果学生只有一个测试,则列表中的SC包含学生对象(当我获得测试列表时

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

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

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

添加(SC)

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

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

列表中:liScoreCards-上一个SC对象。Student变为NULL,而不是原来的Student对象

我做错了什么

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

代码示例:

 // 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);
}
//Psuedo代码:
liTest=DB.GetTests().Include(“学生”);
//代码:
List liScoreCard=新列表();
foreach(测试测试中的测试)
{
记分卡SC=新记分卡();
SC.Student=st.Student;//此行使liScoreCard中具有相同StudentID的SC的学生变为空。
记分卡oldSC=liScoreCard.Find(x->x.StudentID==SC.StudentID);
//一些逻辑,看看哪个等级更高)
//更新oldSC或。。。
liScoreCard.Add(SC);
}

}

我觉得如果我看到一些代码,我可以为您做更多。我将在30分钟内添加一些代码。