2012-10-11 11 views
6

Z moich badań wynika, że ​​wywołanie DbContext.Entry (someEntity) automatycznie połączy jednostkę z kontekstem.DbContext.Entry Attaching Entity

Jednak gdy to zrobię, stwierdzam, że stan jednostki jest odłączony.

Czy ktoś może rzucić trochę światła na to i jak działa DbContect.Entry. Używam EF 5.0

Dzięki.

Odpowiedz

6

Jeśli chcesz dołączyć obiekt, to naprawdę potrzebujesz: DbSet.Attach. DbContext.Entry podaje tylko informacje o encji i pozwala zmienić stan, jeśli jest już dołączony.

Oto good post o stanach podmiot z MSDN

0

Ponieważ odpowiedź od @Mark Oreta nie jest kompletna:

Po link Wysłał i czytając cały słupek ujawnił jakąś inną informację: Czyli DbContext. Entry (someEntity) faktycznie dołącza encję do kontekstu, jeśli ustawisz odpowiadający EntityState, którego potrzebujesz.

Aby dołączyć zmodyfikowane lub dodane podmiot mógłby zrobić:

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

Aby dołączyć niezmodyfikowanej podmiot mógłby zrobić:

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