0

我首先使用实体​​框架代码,我的类是

[Serializable]
    public class Emp
    {
        public int EmpId { get; set; }
        public byte TitleId { get; set; }
        [MaxLength(50)]
        public string FirstName { get; set; }
        [MaxLength(50)]
        public string Surname { get; set; }
        public byte Type { get; set; }

        public List<PracticeEmp> PracticeEmps { get; set; }
    }

[Serializable]
    public class PracticeEmp
    {
        public int PracticeStaffId { get; set; }
        public int PracticeId { get; set; }
        public int EmpId { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? EndDate { get; set; }

        public Emp Emp { get; set; }
    }

当我尝试将数据插入到已经存在的员工的 PracticeEmps 表中时,我使用以下代码

Db.Current.Emps.Attach(practiceEmp.Emp);
Db.Current.PracticeEmps.Add(practiceEmp);

此代码段在附加方法上返回错误“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”

有任何想法吗...

4

1 回答 1

2

如果您附加的 Emp 实例具有对它的引用并且它已经不是上下文的一部分,则 practiceEmp 实例将自动附加到您的上下文中。请注意,两个实体都将处于未更改状态,这是附加实体的默认状态。

于 2012-10-08T02:49:24.787 回答