2012-10-11 7 views
6

Aus meinen Nachforschungen habe ich gelesen, dass das Aufrufen von DbContext.Entry (someEntity) die Entität automatisch an den Kontext anhängen würde.DbContext.Entry Anfügen von Entität

Allerdings, wenn ich dies tue, finde ich, dass der Zustand der Entity losgelöst ist.

Kann jemand etwas Licht darauf und wie der DbContect.Entry funktioniert. Ich benutze EF 5.0

Danke.

Antwort

6

Wenn Sie ein Objekt anhängen möchten, was Sie eigentlich wollen, ist DbSet.Attach. DbContext.Entry gibt Ihnen nur Informationen über die Entität und ermöglicht es Ihnen, den Status zu ändern, wenn er bereits angehängt ist.

Hier ist ein good post über Unternehmen Staaten von MSDN

0

Da die Antwort von @ Mark Oreta nicht abgeschlossen ist:

Nach dem link er geschrieben und liest den ganzen Beitrag einige andere Informationen aufgedeckt: So DbContext. Entry (someEntity) verknüpft die Entität tatsächlich mit dem Kontext, wenn Sie den entsprechenden EntityState angeben, den Sie benötigen.

Um einen geänderten oder hinzugefügten Einheit über Sie tun können:

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

eine unmodifizierte Einheit befestigen Sie tun können:

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