Поделиться через


ObjectChangeConflict.Resolve Метод

Определение

Разрешает конфликты членов.

Перегрузки

Resolve()

Разрешает конфликты между членами, сохраняя текущие значения и переустанавливая исходные базовые значения, которые должны соответствовать последним значениям в базе данных.

Resolve(RefreshMode)

Разрешает конфликты членов, используя указанный режим RefreshMode.

Resolve(RefreshMode, Boolean)

Разрешает конфликты членов, сохраняя текущие значения и сбрасывая основные исходные значения.

Resolve()

Разрешает конфликты между членами, сохраняя текущие значения и переустанавливая исходные базовые значения, которые должны соответствовать последним значениям в базе данных.

public:
 void Resolve();
public void Resolve ();
member this.Resolve : unit -> unit
Public Sub Resolve ()

Применяется к

Resolve(RefreshMode)

Разрешает конфликты членов, используя указанный режим RefreshMode.

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)

Параметры

refreshMode
RefreshMode

Соответствующий параметр из режима RefreshMode.

Примеры

В следующем примере текущие значения перезаписываются значениями из базы данных.

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

В следующем примере показано, как заменить исходное значение значениями, полученными из базы данных. Текущее значение не изменяется.

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

В следующем примере текущие значения, которые были изменены, сохраняются, но другие значения обновляются значениями базы данных.

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)

Комментарии

В следующих примерах показано, какие результаты получены с помощью различных значений для RefreshMode.

Применяется к

Resolve(RefreshMode, Boolean)

Разрешает конфликты членов, сохраняя текущие значения и сбрасывая основные исходные значения.

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

Параметры

refreshMode
RefreshMode

Соответствующий параметр из режима RefreshMode.

autoResolveDeletes
Boolean

Если значение равно true, автоматически разрешает конфликты, которые являются результатом измененного объекта, который больше не находится в базе данных.

Применяется к