我的模特:
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);
这个人加倍,我不想复制或在我这样做时插入一个新人。
为什么?
答案 0 :(得分:1)
您的project
附加了什么情境?它可能会加倍,因为您从存储库获取的person
entity
不在您的project
对象所属的上下文中。因此,当上下文尝试创建/更新您的project
实体时,它会将其翻倍。
尝试将person
附加到相同的上下文,或者确保在两个存储库中都有一个上下文。