C# 批量插入:集合已修改;枚举操作不能执行
我使用此代码将数据保存到数据库中(我的数据来自一个文本文件,我使用Regex提取该文件中的字段): 我的模型:C# 批量插入:集合已修改;枚举操作不能执行,c#,ef-code-first,bulkinsert,C#,Ef Code First,Bulkinsert,我使用此代码将数据保存到数据库中(我的数据来自一个文本文件,我使用Regex提取该文件中的字段): 我的模型: 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&l
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; }
}
公共类惯用法
{
公共Int32 Id{get;set;}
公共字符串动词{get;set;}
表示{get;set;}的公共字符串
公共字符串说明{get;set;}
公共IList示例{get;set;}
}
公共类习语示例
{
公共Int32 Id{get;set;}
公共字符串项{get;set;}
}
当我检查我的表的数据时,两条记录刚刚插入了و,而在Idioms的表中应该是500条记录,在Idioms的表中大约是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();
}
使用(var db=new MyDbContext())
{
foreach(r.Matches中的匹配(输入))
{
var list=新列表();
字符串val=match.Groups[1].Value;//惯用法
string val2=match.Groups[2].Value;//含义
string val3=match.Groups[3].Value;//Desc
foreach(在match.Groups[“我的”]中捕获c。捕获)
{
Add(新示例{Item=c.Value});
}
db.Idioms.Add(新的惯用语)
{
动词=val,
意思=val2,
Description=val3,
示例=列表
});
}
db.SaveChanges();
}
您能指出在哪一行代码中触发了异常吗?在这一行:db.Idioms.Add(new-Idiom(){Verb=val,means=val2,Description=val3,Idiom-examples=list})代码>顺便问一下,list变量不应该在db.idons.Add之后或外部foreach的开始处为新实例分配一个“new”吗?否则,您将无休止地链接到该列表,并将其分配给不同的习惯用法。但是我认为你需要为每个习语列出不同的列表
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; }
}
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();
}