为什么我的Entity Framework对象重复?

时间:2016-12-19 15:33:09

标签: entity-framework entity-framework-6

我有两个类,我已经简化了这个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();
        }

我希望在简化此代码时没有出现任何错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

尝试在单一环境中执行。您在一个上下文中获取childOne和childTwo,该上下文在获取后立即处理。

因此,您可能需要在新上下文 context.Child.Attach(childOne);context.Child.Attach(childTwo‌​);

中附加这两个子实体

或者在同一个上下文中执行这两个操作,以便子实体相关而不是添加