我有两个类,我已经简化了这个SO问题。每当我添加一个新的“父”并附加现有的“子”实体时,我最终会有重复的孩子。我做错了什么?
public class Group
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int GroupId { get; set; }
public virtual Child ChildOne { get; set; }
public virtual Child ChildTwo { get; set; }
}
public class Child
{
[Key]
public int ChildId { get; set; }
public bool Available { get; set; }
}
using (var context = new RPSContext())
{
Child childOne = context.Child.Where(p => p.Available == true).OrderBy(p => p.ChildId).FirstOrDefault();
Child childTwo = context.Child.Where(p => p.Available == true).OrderBy(p => p.ChildId).Skip(1).Take(1).FirstOrDefault();
}
Parent parent = new Models.Parent;
parent.ChildOne = childOne;
parent.ChildTwo = childTwo;
using (var context = new RPSContext())
{
context.Parent.Add(parent);
parent.ChildOne.Available = false;
parent.ChildTwo.Available = false;
context.SaveChanges();
}
我希望在简化此代码时没有出现任何错误。有人可以帮忙吗?
答案 0 :(得分:1)
尝试在单一环境中执行。您在一个上下文中获取childOne和childTwo,该上下文在获取后立即处理。
因此,您可能需要在新上下文
context.Child.Attach(childOne);context.Child.Attach(childTwo);
或者在同一个上下文中执行这两个操作,以便子实体相关而不是添加