Partager via


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

Voir aussi

Référence

DataContext classe

DataContext - Membres

Microsoft.SharePoint.Linq - Espace de noms