大容量插入:数据集被修改;不能执行枚举操作
本文关键字:不能 执行 枚举 操作 修改 插入 数据集 大容量 | 更新日期: 2023-09-27 18:01:59
我使用以下代码将数据保存到数据库中(我的数据来自一个文本文件,我使用Regex提取该文件中的字段):
var list = new List<IdiomExample>();
using (var db = new MyDbContext())
{
foreach (Match match in r.Matches(input))
{
string val = match.Groups[1].Value; // Idiom
string val2 = match.Groups[2].Value; // Meaning
string val3 = match.Groups[3].Value; // Desc
foreach (Capture c in match.Groups["my"].Captures)
{
list.Add(new IdiomExample{Item = c.Value});
}
db.Idioms.Add(new Idiom
{
Verb = val,
Meaning = val2,
Description = val3,
IdiomExamples = list
});
db.SaveChanges();
}
}
但是当我运行我的代码时,我得到这个异常:
Collection was modified; enumeration operation may not execute.
My models:
public class Idiom
{
public Int32 Id { get; set; }
public string Verb { get; set; }
public string Meaning { get; set; }
public string Description { get; set; }
public IList<IdiomExample> IdiomExamples { get; set; }
}
public class IdiomExample
{
public Int32 Id { get; set; }
public string Item { get; set; }
}
当我检查表的数据时,两条记录刚刚插入,而在习语表中应该有500条记录,在习语示例表中应该有1000条记录。我该如何解决我的问题?
试一试:
using (var db = new MyDbContext())
{
foreach (Match match in r.Matches(input))
{
var list = new List<IdiomExample>();
string val = match.Groups[1].Value; // Idiom
string val2 = match.Groups[2].Value; // Meaning
string val3 = match.Groups[3].Value; // Desc
foreach (Capture c in match.Groups["my"].Captures)
{
list.Add(new IdiomExample{Item = c.Value});
}
db.Idioms.Add(new Idiom
{
Verb = val,
Meaning = val2,
Description = val3,
IdiomExamples = list
});
}
db.SaveChanges();
}