如何添加到 ICollection 列表并将其保存到数据库中,而不会获得对象已释放异常?(实体框架)



假设我们有这样的类:

public class SampleClass
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public virtual ICollection<ScoreData> ScoreData{ get; set; }
}

还有另一个这样的类:

public class ScoreData
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id {get; set;}
    public int subSectionScore {get; set;}
    public int SampleClassID { get; set; }
    public virtual SampleClass SampleClass { get; set; }
}

为什么这会引发对象已释放异常以及如何修复它?

internal static void CalculatesubSectionScores(ref List<SampleClass> sampleClassData)
{
    foreach (var item in sampleClassData)
    {
        item.ScoreData= new List<ScoreData>();
        /* code in second foreach accesses another objects item to 
           use for each sub sections calculations*/
        foreach ()
        {
           var scoringData = new ScoreData();
           var score = 0.0;
           scoringData.subSectionScore = score;
           item.ScoreData.Add(scoringData);
        }
    }

我已经从这个类中删除了大部分逻辑,只是为了专注于手头的问题。

在添加到之前声明ScoreData

internal static void CalculatesubSectionScores(ref List<SampleClass> sampleClassData)
{
    foreach (var item in sampleClassData)
    {
        item.ScoreData= new List<ScoreData>();
        /* code in second foreach accesses another objects item to 
           use for each sub sections calculations*/
        item.ScoreData = new List<ScoreData>();  // Add This Line
        foreach ()
        {
           var scoringData = new ScoreData();
           var score = 0.0;
           scoringData.subSectionScore = score;
           item.ScoreData.Add(scoringData);
        }
    }
}

最新更新