2012-10-11 28 views
6

De mi investigación, leí que llamar a DbContext.Entry (someEntity) asociaría automáticamente la entidad al contexto.DbContext.Entry attaching Entity

Sin embargo, cuando hago esto, encuentro que el estado de la entidad es independiente.

¿Alguien puede arrojar algo de luz sobre esto y cómo funciona el DbContect.Entry? Estoy usando EF 5.0

Gracias.

Respuesta

6

Si quiere adjuntar un objeto, lo que realmente quiere es DbSet.Attach. DbContext.Entry solo le proporciona información sobre la entidad y le permite cambiar el estado si ya se ha adjuntado.

Aquí hay una good post acerca de los estados de la entidad a partir de MSDN

0

Dado que la respuesta de @ Marcos Oreta no es completa:

Tras la link que publicó y leer el post entero revelado alguna información diferente: Así DbContext. La entrada (algunaEntidad) en realidad está adjuntando la entidad al contexto si establece el EntityState correlativo que necesita.

Para adjuntar una entidad modificado o agregado que podría hacer:

using(var yourDbContext = new YourDbContext()) 
{ 
    yourDbContext.Entry(yourEntity).State = 
     yourEntity.ID == 0 ? 
      System.Data.Entity.EntityState.Added : 
      System.Data.Entity.EntityState.Modified; 
} 

Para adjuntar una entidad sin modificar se podía hacer:

using(var yourDbContext = new YourDbContext()) 
{ 
    yourDbContext.Entry(yourEntity).State = System.Data.Entity.EntityState.Unchanged; 
}