2012-04-06 18 views
1

eingeführt wird ich den folgenden Code verwenden bestimmte Datensätze aus der db UPDATE:Entity Framework: aktualisierten Datensatz (statt aktualisiert)

 IList<Item> list; 
     using (DbContext context = new DbContext() 
     { 
      list = Item.ToList(); 
      foreach (Item item in list) 
      { 
       // attach the item 
       context.Item.Attach(item); 

       item.Updated = DateTime.Now; 
       context.Items.Add(item); 
       context.SaveChanges(); 
      } 
     } 

Das Problem ist, dass EF statt Aktualisierung ein neues Objekt wird EINFÜGEN das aktualisierte Item ... Ich habe auf der Site etwas gesucht und einen Vorschlag gesehen, das Item an den DbContext anzuhängen, aber das funktioniert auch nicht? Was mache ich falsch?

+0

Hallo, ich habe eine kleine Änderung an meiner Antwort vorgenommen: Es ist normalerweise besser, 'SaveChanges' nur einmal nach der 'foreach'-Schleife aufzurufen, nicht innerhalb der Schleife. – Slauma

Antwort

6

sollte das Verfahren sein:

using (DbContext context = new DbContext() 
{ 
    foreach (Item item in list) 
    { 
     item.Updated = DateTime.Now; 
     context.Entry(item).State = EntityState.Modified;//attaches automatically 
    } 
    context.SaveChanges(); 
} 

Sie Add fordern die INSERT bedeutet.

Verwandte Themen