重复代码第一个MVC多对多

时间:2012-09-07 14:55:20

标签: c# asp.net-mvc many-to-many code-first

我的模特:

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);

这个人加倍,我不想复制或在我这样做时插入一个新人。

为什么?

1 个答案:

答案 0 :(得分:1)

您的project附加了什么情境?它可能会加倍,因为您从存储库获取的person entity不在您的project对象所属的上下文中。因此,当上下文尝试创建/更新您的project实体时,它会将其翻倍。

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