【发布时间】:2012-03-13 10:44:17
【问题描述】:
我目前使用的是 EF 4.0。我的目标是删除一个子集合并将新集合添加到同一个父集合。
public void AddKids(int parentId, Kids newKids)
{
using (ModelContainer context = new ModelContainer(connectionString))
{
using (TransactionScope scope = new TransactionScope())
{
var query = from Parent _parent in context.Parents
where _parent.ParentId == parentId select _parent;
Parent parent = query.Single();
while (parent.Kids.Any())
{
context.Kids.DeleteObject(parent.Kids.First());
}
if (newKids != null)
{
foreach (Kid _kid in newKids)
{
parent.Kids.Add(new Kid
{
Age = _kid.Age,
Height = _kid.Height
});
}
}
scope.Complete();
}
context.SaveChanges(); //Error happens here
}
}
错误来自标题:集合已修改;枚举操作可能无法执行。
任何帮助将不胜感激。
【问题讨论】:
-
@JustinNiessner:谢谢,我编辑了我的问题。
-
现在我也想知道 parent 是在哪里定义的。
-
你打开了一个新的上下文但是你修改了一个旧的缓存?父实例。我怀疑有你的问题。您应该打开上下文,检索父级并对其进行修改。
-
我再次编辑了我的问题。谢谢你们。
-
我尝试设置一个完整的模拟副本。它对我来说很好:/.
标签: c# entity-framework