de la propiedad DataContext.ChangeConflicts
Obtiene una colección de objetos que representan las discrepancias entre el valor actual del cliente y el valor actual de la base de datos de un campo en un elemento de lista.
Espacio de nombres: Microsoft.SharePoint.Linq
Ensamblado: Microsoft.SharePoint.Linq (en Microsoft.SharePoint.Linq.dll)
Sintaxis
'Declaración
Public Property ChangeConflicts As ChangeConflictCollection
Get
Friend Set
'Uso
Dim instance As DataContext
Dim value As ChangeConflictCollection
value = instance.ChangeConflicts
public ChangeConflictCollection ChangeConflicts { get; internal set; }
Valor de propiedad
Tipo: Microsoft.SharePoint.Linq.ChangeConflictCollection
ChangeConflictCollection cada uno de cuyos miembros representa una discrepancia.
Comentarios
Al menos un miembro de la propiedad también representa un conflicto de concurrencia que se detectó cuando se llamó a SubmitChanges() por última vez. ChangeConflicts no se llena a menos que haya al menos un conflicto de concurrencia: una discrepancia entre el valor actual de la base de datos del campo y el valor que tenía cuando el último obtenido por el proceso actual. Si se encuentra un conflicto, SubmitChanges() también rellena ChangeConflicts con objetos que representan cualquier discrepancia entre el valor actual del cliente y el valor actual de la base de datos.
Normalmente, el código detectará un ChangeConflictException y resolver las discrepancias en el ChangeConflicts en el bloque de catch (Catch en Visual Basic).
Ejemplos
El siguiente es un ejemplo de cómo se utiliza la propiedad ChangeConflicts en un bloque de catch .
foreach (TeamMember teamMember in teamSite.TeamMembers)
{
teamMember.TopTask = "Fiscal Planning";
}
try
{
teamSite.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (ChangeConflictException e)
{
foreach (ObjectChangeConflict changedListItem in teamSite.ChangeConflicts)
{
// If another user has changed properties of a non-manager,
// leave that other user’s changes, except for the TopTask field.
if (((TeamMember)changedListItem.Object).IsManager = false)
{
foreach (MemberChangeConflict changedField in changedListItem.MemberConflicts)
{
if (changedField.Member.Name == "TopTask")
{
changedField.Resolve(RefreshMode.KeepCurrentValues);
}
else
{
changedField.Resolve(RefreshMode.OverwriteCurrentValues);
}
}
}
// But if another user has changed properties of a manager, let this
// process’s changes override the other user’s changes.
else
{
changedListItem.Resolve(RefreshMode.KeepCurrentValues);
}
}
teamSite.SubmitChanges();
} // end catch
For Each teamMember As TeamMember In teamSite.TeamMembers
teamMember.TopTask = "Fiscal Planning"
Next teamMember
Try
teamSite.SubmitChanges(ConflictMode.ContinueOnConflict)
Catch e As ChangeConflictException
For Each changedListItem As ObjectChangeConflict In teamSite. ChangeConflicts
' If another user has changed properties of a non-manager,
' leave that other user’s changes, except for the TopTask field.
If Not (CType(changedListItem.Object, TeamMember)).IsManager Then
For Each changedField As MemberChangeConflict In changedListItem.MemberConflicts
If changedField.Member.Name = "TopTask" Then
changedField.Resolve(RefreshMode.KeepCurrentValues)
Else
changedField.Resolve(RefreshMode.OverwriteCurrentValues)
End If
Next changedField
' But if another user has changed properties of a manager, let this
' process’s changes override the other user’s changes.
Else
changedListItem.Resolve(RefreshMode.KeepCurrentValues)
End If
Next changedListItem
teamSite.SubmitChanges()
End Try ' end catch