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

人を2倍にします。これを行うときに、重複したり、新しい人を挿入したりしたくありません。

何故ですか?

4

1 に答える 1

1

あなたはどのような文脈にproject愛着を持っていますか? person entityリポジトリから取得している は、projectオブジェクトが含まれているコンテキストにないため、おそらく倍増しています。したがって、コンテキストがprojectエンティティを作成/更新しようとすると、それが倍増します。

を同じコンテキストにアタッチするpersonか、両方のリポジトリで単一のコンテキストがあることを確認してください。

于 2012-09-07T15:25:08.923 に答える