Sdílet prostřednictvím


MemberChangeConflict.Resolve Metoda

Definice

Řeší konflikty členů zachováním aktuálních hodnot a resetováním původních hodnot směrného plánu tak, aby odpovídaly novějším hodnotám databáze.

Přetížení

Resolve(RefreshMode)

RefreshMode Používá parametr k automatickému určení hodnoty, která se má nastavit jako aktuální hodnota pro konfliktní člen.

Resolve(Object)

Určuje hodnotu, která se má nastavit jako aktuální hodnota pro konfliktní člen.

Resolve(RefreshMode)

RefreshMode Používá parametr k automatickému určení hodnoty, která se má nastavit jako aktuální hodnota pro konfliktní člen.

public:
 void Resolve(System::Data::Linq::RefreshMode refreshMode);
public void Resolve (System.Data.Linq.RefreshMode refreshMode);
member this.Resolve : System.Data.Linq.RefreshMode -> unit
Public Sub Resolve (refreshMode As RefreshMode)

Parametry

refreshMode
RefreshMode

Viz třída RefreshMode.

Příklady

Následující příklad přepíše aktuální hodnoty hodnotami z databáze.

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

Následující příklad ukazuje, jak prohodit původní hodnotu s hodnotami načtenými z databáze. Aktuální hodnota není změněna.

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

Následující příklad uchovává aktuální změněné hodnoty, ale aktualizuje ostatní hodnoty hodnotami databáze.

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)

Poznámky

Následující příklady ukazují, jaké výsledky se generují pomocí různých hodnot pro RefreshMode.

Platí pro

Resolve(Object)

Určuje hodnotu, která se má nastavit jako aktuální hodnota pro konfliktní člen.

public:
 void Resolve(System::Object ^ value);
public void Resolve (object value);
member this.Resolve : obj -> unit
Public Sub Resolve (value As Object)

Parametry

value
Object

Hodnota, která se má nastavit jako aktuální hodnota.

Poznámky

Zde nastavená hodnota je hodnota, která se použije v následné SubmitChanges operaci.

Platí pro