Speichern im Entity-Framework

8

Ich habe diesen Artikel gelesen und immer noch wichtige Momente missverstehen. Brauchen wir nicht anrufen

%Vor%

in jeder Operation Löschen / Aktualisieren / ...?

Wenn ich die Eigenschaft einer Entität ändere, übergibt SaveChanges() das Ergebnis an die Datenbank oder muss ich EntityState.Modifyed ? manuell setzen?

Hier ist mein Code:

%Vor%     
NET 14.03.2013, 07:41
quelle

2 Antworten

4

Sie fragen:

  

Brauchen wir nicht anrufen?       _context.SaveChanges ()   in jeder Operation Löschen / Aktualisieren / ...?

Nein, tun wir nicht. Beim Aufruf von Delete wird die Entität nicht akkumuliert - wir markieren sie zum Löschen.

Dasselbe gilt für Update , obwohl Sie nichts anderes tun müssen, um die gewünschten Änderungen an der Entität vorzunehmen. Alle Eigenschaften (die von der Standardvorlage generiert werden) implementieren INotifyPropertyChanged , sodass sie wissen, wann eine Entität geändert wird.

Alle Entitäten (in der Datenbank zuerst - automatisch generiert durch Vorlage defullt) haben eine Eigenschaft State . Diese Eigenschaft wird von ObjectContext beibehalten, solange die Chages im Rahmen der ObjectEntity stattfinden.

z.B.

%Vor%

Dann rufen Sie SaveChanges auf alle Entitäten mit dem Status Added Deleted oder Modified werden ihre Änderungen in der Datenbank in einer lokalen Transaktion

beibehalten

BEARBEITEN

Wenn eine Entität zum Löschen markiert ist und Sie versuchen, sie zu ändern, erhalten Sie InvalidOperationException

    
Jens Kloster 14.03.2013, 08:15
quelle
2

Sie können viele Änderungen in Ihrem speicherinternen Kontext durchführen, wie Einfügen, Aktualisieren und Löschen. Sobald Sie SaveChanges () aufrufen, werden alle von Ihnen vorgenommenen Änderungen gespeichert in der DB bei einer einzigen Transaktion. Dies bedeutet, dass sie alle entweder eingereicht werden, oder keiner von ihnen im Falle eines Fehlers.

    
omer schleifer 14.03.2013 07:47
quelle