0

これは説明するのが難しいものです。私は、テーブルのテストとテーブルの学生、およびスコアカードを含む DB を持っています。各テストには学生の FK があり、スコアカードにも同じことが当てはまります。

学生は複数回テストを受けることができるため、同じ学生を指すテストの記録が多数存在する可能性があります。

現在、スコアカードはメモリ内でのみ使用しています。これらのスコアカード オブジェクトのリストがあります: liScoreCard. すべてのテストを反復し、反復ごとに新しいスコアカード オブジェクトを作成し、最後に、それが最良の場合はリストに追加します (そうでない場合は、リスト内の既存のスコア カードのテストの数を変更するだけです)。 ):

liScoreCards.Add(SC);

学生のテストが 1 つしかない場合、リストの SC には Student オブジェクトが含まれます (テストのリストを取得するときに、クエリで "Include("Student")" を使用します。

将来のテストで、これを行ったときに(後のテストで)同じ学生を再び見つけた場合:(テストからの学生オブジェクトを新しいスコアカードオブジェクトに追加する) sc.Student = test.Student

リスト内: liScoreCards - 以前の SC object.Student は、そこにあった Student オブジェクトの代わりに NULL になります。

私は何を間違っていますか?

学生オブジェクトを新しい 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