DataContext.ChangeConflicts - Propriété
Obtient une collection d'objets qui représentent les différences entre la valeur du client en cours et la valeur actuelle de la base de données d'un champ dans un élément de liste.
Espace de noms : Microsoft.SharePoint.Linq
Assembly : Microsoft.SharePoint.Linq (dans Microsoft.SharePoint.Linq.dll)
Syntaxe
'Déclaration
Public Property ChangeConflicts As ChangeConflictCollection
Get
Friend Set
'Utilisation
Dim instance As DataContext
Dim value As ChangeConflictCollection
value = instance.ChangeConflicts
public ChangeConflictCollection ChangeConflicts { get; internal set; }
Valeur de propriété
Type : Microsoft.SharePoint.Linq.ChangeConflictCollection
ChangeConflictCollection chaque dont les membres représente un écart.
Remarques
Au moins un membre de la propriété représente également un conflit d'accès concurrentiel qui a été détecté lors du dernier appel de SubmitChanges() . ChangeConflicts n'est pas remplie, sauf si au moins un conflit d'accès concurrentiel s'est produite : un écart entre la valeur actuelle de la base de données du champ et la valeur qu'il avait lorsqu'il a été récupéré par le processus en cours. Si un conflit est détecté, SubmitChanges() remplit également ChangeConflicts avec des objets qui représentent toute différence entre la valeur du client en cours et la valeur actuelle de la base de données.
En règle générale, votre code interceptera une ChangeConflictException et résoudre les divergences dans ChangeConflicts dans le bloc catch (Catch dans Visual Basic).
Exemples
Voici un exemple de la façon dont la propriété ChangeConflicts est utilisée dans un bloc 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