I Verwenden Sie diesen Code für die Aktualisierung eines Feld in meiner Tabelle. (Mit Entity Framework 6.1.3)EntityState.Modified arbeitet nicht in Entity-Code Erste
var model = new MyTable { Id = Id, UpdateTime = DateTime.UtcNow };
var dbSet = this.dbContext.Set<MyTable>();
dbSet.Attach(model);
entry = this.dbContext.Entry(model);
entry.State = EntityState.Modified;
this.dbContext.SaveChanges();
aber nicht funktionieren und Update nicht change.and wenn ich Code dies zu ändern:
var model = this.dbContext.Set<MyTable>().Find(id);
model = new MyTable { Id = Id, UpdateTime = DateTime.UtcNow };
var dbSet = this.dbContext.Set<MyTable>();
entry = this.dbContext.Entry(model);
entry.State = EntityState.Modified;
this.dbContext.SaveChanges();
fand ich, dass in meinem ersten Code, EF Blick auf Update Feld, das nicht ändern, aber ist dies der richtige, wenn ich schreibe:
entry.State = EntityState.Modified;
ef muss Update-Code generieren, warum nicht? Wie muss ich tun, um dieses Problem zu lösen?
Ich bin nicht sicher, aber ich denke, dass es sein könnte, weil der Eintrag() -Aufruf Sie ein DbEntityEntry bekommt, während die DbSet ein IQueryable ist , so Der zurückgegebene Eintrag ist nicht länger Teil des Kontexts. –
DevilSuichiro
no.it isnit.in DbSet Zusammenfassung geschrieben: Gibt eine System.Data.Entity.DbSet'1 Instanz für den Zugriff auf Entitäten des angegebenen Typs im Kontext und dem zugrunde liegenden Speicher zurück. Beachten Sie, dass Entity Framework erfordert, dass diese Methode die gleiche Instanz jedes Mal zurückgibt, wenn sie für eine bestimmte Kontextinstanz und einen bestimmten Entitätstyp aufgerufen wird. und dies kann Test mit Änderung dbSet-Variable mit this.dbContext.Set (); und das Ergebnis ist das gleiche wie zuvor. –
ist jedoch genau dieser Eintrag derjenige, der an den Kontext angehängt ist? Da bin ich mir nicht sicher. – DevilSuichiro