How to insert Entities, related to others already existing, in the EntityFramework?

4

In case supposing an "EntityA" entity that references an entity "EntityB", I want to save it, but referencing an existing entity B ex:

EntidadeA a = new EntidadeA();
EntidadeB b = new EntidadeB();
b.Id = 5;// id de entidade existente no banco
a.EntidadeB = b;
context.EntidadesA.Add(a);
context.SaveChanges();
//porém neste caso o framework cria uma nova entidade para b,
//o real objetivo é referenciar uma entidade ja persistida com o id 5
    
asked by anonymous 08.12.2014 / 18:48

2 answers

2

Alternatively, you can select all desired entities through a context and make the association. For example:

var minhasEntidades = contexto.EntidadesB.Where(e => e.Tipo == algumTipo).ToList();
var a = new EntidadeA {
    EntidadesB = minhasEntidades
};

contexto.EntidadesA.Add(a);
contexto.SaveChanges();

There are few situations where Attach is recommended, such as if the record is certainly not mapped by context at that time.

    
08.12.2014 / 19:52
2

Make this MODE

EntidadeA a = new EntidadeA();
EntidadeB b = new EntidadeB();
b.Id = 5;// id de entidade existente no banco
a.EntidadeB = b;

context.EntidadeB.Attach(a.EntidadeB);

context.EntidadesA.Add(a);
context.SaveChanges();
    
08.12.2014 / 19:21