Inserting and updating data in N-N tables (many for many)

2

I'm having trouble saving in a many-to-many relationship, follow my template:

public class Pessoa
{
    public int id { get; set; }
    public string descricao { get; set; }
    public ICollection<Conta> Conta { get; set; }
}


public class Conta
{
    public int id { get; set; }
    public string descricao { get; set; }
    public ICollection<Pessoa> Pessoa { get; set; }
}

Here is the setting in my context for n-n:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Pessoa>()
        .HasMany<Conta>(x => x.Conta)
        .WithMany(x => x.Pessa)
        .Map(x =>
        {
            x.ToTable("PessoaConta");
            x.MapLeftKey("pessoaId");
            x.MapRightKey("contaId");
        });
    base.OnModelCreating(modelBuilder);
}

So far so good: my migrations scheme works perfectly, but I would like to know when to save the data in the pessoa table and the conta table already insert the respective values in the% . Thanks in advance.

    
asked by anonymous 02.02.2017 / 20:50

1 answer

3

Collections must be virtual . Also try to use plural names:

public virtual ICollection<Conta> Contas { get; set; }
public virtual ICollection<Pessoa> Pessoas { get; set; }

Do some testing:

var fulano = new Pessoa { descricao = "Fulano" };
var beltrano = new Pessoa { descricao = "Beltrano" };
var sicrano = new Pessoa { descricao = "Sicrano" };

context.Pessoas.Add(fulano);
context.Pessoas.Add(beltrano);
context.Pessoas.Add(sicrano);

context.SaveChanges();

var conta = new Conta { descricao = "Conta Coletiva" };
conta.Pessoas = new List<Pessoa> { fulano, beltrano, sicrano };
context.Contas.Add(conta);

context.SaveChanges();
    
02.02.2017 / 23:18