1

我的模型:

public class Person
{
    [Key]
    public int IdPerson { get; set; }

    public string Name { get; set; }

    public List<Project> Projects { get; set; }
}

public class Project
{
    [Key]
    public int IdProject {get; set;}

    public string Name { get; set; }

    public ICollection<Person> Members { get; set; }
}

我的背景:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Project>()
        .HasMany(p => p.Members)
        .WithMany(e => e.Projects)
        .Map(pe =>
        {
            pe.ToTable("ProjectPersonTable");
            pe.MapLeftKey("IdPerson");
            pe.MapRightKey("IdProject");
        });
}

现在当我这样做时:

 Person person = personRepository.GetSingle(Idperson);
 project.Members.Add(person);

将人加倍,我不希望重复或在执行此操作时插入新人。

这是为什么?

4

1 回答 1

1

project依附于什么背景?它可能会加倍,因为person entity您从存储库中获取的内容不在您的project对象所属的上下文中。因此,当上下文尝试创建/更新您的project实体时,它会加倍。

尝试将 附加person到相同的上下文,或者确保您在两个存储库中都有一个上下文。

于 2012-09-07T15:25:08.923 回答