RefreshMode Enumeration

Definition

Definiert, wie die Refresh-Methode optimistische Parallelitätskonflikte behandelt.

public enum class RefreshMode
public enum RefreshMode
type RefreshMode = 
Public Enum RefreshMode
Vererbung
RefreshMode

Felder

Name Wert Beschreibung
KeepCurrentValues 0

Erzwingt die Refresh Methode, den ursprünglichen Wert mit den aus der Datenbank abgerufenen Werten zu tauschen. Es wird kein aktueller Wert geändert.

KeepChanges 1

Erzwingt die Refresh Methode, den aktuellen Wert beizubehalten, der geändert wurde, aktualisiert aber die anderen Werte mit den Datenbankwerten.

OverwriteCurrentValues 2

Erzwingt die Refresh Methode, alle aktuellen Werte mit den Werten aus der Datenbank außer Kraft zu setzen.

Beispiele

Im folgenden Beispiel werden die aktuellen Werte mit Werten aus der Datenbank überschrieben.

Northwnd db = new Northwnd("...");
try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}

catch (ChangeConflictException e)
{
    Console.WriteLine(e.Message);
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        // All database values overwrite current values.
        occ.Resolve(RefreshMode.OverwriteCurrentValues);
    }
}
Dim db As New Northwnd("...")

Try
    db.SubmitChanges(ConflictMode.ContinueOnConflict)

Catch ex As ChangeConflictException
    Console.WriteLine(ex.Message)

    For Each occ As ObjectChangeConflict In db.ChangeConflicts
        ' All database values overwrite current values.
        occ.Resolve(Data.Linq.RefreshMode.OverwriteCurrentValues)
    Next

End Try

Das folgende Beispiel zeigt, wie Der ursprüngliche Wert mit den aus der Datenbank abgerufenen Werten ausgetauscht wird. Es wird kein aktueller Wert geändert.

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}

catch (ChangeConflictException e)
{
    Console.WriteLine(e.Message);
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        //No database values are merged into current.
        occ.Resolve(RefreshMode.KeepCurrentValues);
    }
}
Try
    db.SubmitChanges(ConflictMode.ContinueOnConflict)

Catch ex As ChangeConflictException
    Console.WriteLine(ex.Message)

    For Each occ As ObjectChangeConflict In db.ChangeConflicts
        ' No database values are merged into current.
        occ.Resolve(Data.Linq.RefreshMode.KeepCurrentValues)
    Next

End Try

Im folgenden Beispiel werden die aktuellen Werte beibehalten, die geändert wurden, aber die anderen Werte werden mit Datenbankwerten aktualisiert.

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}

catch (ChangeConflictException e)
{
    Console.WriteLine(e.Message);
    // Automerge database values for members that client
    // has not modified.
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        occ.Resolve(RefreshMode.KeepChanges);
    }
}

// Submit succeeds on second try.
db.SubmitChanges(ConflictMode.FailOnFirstConflict);
Try
    db.SubmitChanges(ConflictMode.ContinueOnConflict)

Catch ex As ChangeConflictException
    Console.WriteLine(ex.Message)

    For Each occ As ObjectChangeConflict In db.ChangeConflicts
        ' Automerge database values into current for members
        ' that client has not modified.
        occ.Resolve(Data.Linq.RefreshMode.KeepChanges)
    Next

End Try

' Submit succeeds on second try.
db.SubmitChanges(ConflictMode.FailOnFirstConflict)

Hinweise

Diese Aufzählung gilt für alle Refresh Überladungen.

Gilt für: