2017-04-20 3 views
0

Ich versuche, ein einfaches Update mit Entity Framework zu tun. Kann mir jemand sagen, was mit meiner Update-Anweisung falsch ist?Entity Framework wird Datensatz nicht aktualisieren nach SaveChanges() mit state = EntityState.Modified

Alles läuft reibungslos - kein Fehler zur Laufzeit, aber nichts ändert sich in der Datenbank.

Hier ist mein Code Ich hoffe, es

var cartItem = context.Carts.FirstOrDefault(x => x.id == id); 
cartItem.Quantity = quantity; 
context.Entry(cartItem).State = EntityState.Modified; 
context.Carts.Attach(cartItem); 

context.SaveChanges(); 

Antwort

0

ich die Lösung für mein Problem gefunden. Das Problem war kein Code-Fehler, sondern ein Fehler im Entity-Framework selbst, wenn es eine aspx-Seite mit demselben Namen wie eines der Objekte gibt, die von der edmx auf SaveChanges generiert wurden, anstatt die Eigenschaften des Modells für das aktuelle Element zu übernehmen Oder/m übernimmt die Eigenschaften der Webseite und löst eine Nullreferenzausnahme aus, da die richtigen Werte für die Abfrage nicht gefunden werden können. Danke für die Hilfe und Geduld übrigens.

1

hilft das ist, weil Sie die Entität sind angebracht, bevor SaveChanges Methode aufzurufen:

var cartItem = context.Carts.FirstOrDefault(x => x.id == id); 
    cartItem.Quantity = quantity; 

    context.SaveChanges(); 

Auch wenn Sie nicht deaktiviert EF Änderung Tracking dann müssen Sie nicht die State zu Modified ändern, EF wird die Arbeit für Sie erledigen. Wenn Sie die Methode Attach aufrufen, setzen Sie die Eigenschaft State auf Unchanged.

können Sie Attach auf diese Weise verwenden:

var cartItem= new Cart{id=id}; //Create an instance of your entity setting the key 
context.Carts.Attach(cartItem);// Attach the entity to the context 
cartItem.Quantity = quantity; //Set the property 
//If you haven't disabled change tracking or proxy creation, then you don't need to change the State, EF will do it. 
context.Entry(cartItem).State = EntityState.Modified; 

context.SaveChanges(); 
+0

Wenn ich versuche, Änderungen zu speichern, während die Entität nicht angehängt ist, erhalte ich eine NULL-Referenzausnahme im Namen des Kontexts, weil es dort keine solche Entität gibt –

+0

null reference exception? Ich verstehe nicht, warum, trotzdem werde ich eine andere Lösung mit 'Attach' posten – octavioccl

+0

Nun, ja, ich fand es auch seltsam, deshalb habe ich hier gefragt –

Verwandte Themen