DataContext.SubmitChanges - Méthode (ConflictMode)
Rend persistant dans les contenu de la base de données apportées par l'utilisateur en cours pour une ou plusieurs listes à l'aide du mode de défaillance spécifié ; ou, si un conflit d'accès concurrentiel est trouvé, remplit la propriété ChangeConflicts .
Espace de noms : Microsoft.SharePoint.Linq
Assembly : Microsoft.SharePoint.Linq (dans Microsoft.SharePoint.Linq.dll)
Syntaxe
'Déclaration
Public Sub SubmitChanges ( _
failureMode As ConflictMode _
)
'Utilisation
Dim instance As DataContext
Dim failureMode As ConflictMode
instance.SubmitChanges(failureMode)
public void SubmitChanges(
ConflictMode failureMode
)
Paramètres
failureMode
Type : Microsoft.SharePoint.Linq.ConflictModeUne valeur qui spécifie si un conflit d'accès concurrentiel doit arrêter l'écriture des modifications plus.
Exceptions
Exception | Condition |
---|---|
InvalidOperationException | ObjectTrackingEnabled est false - ou - Au moins un conflit de ChangeConflicts depuis le dernier appel de SubmitChanges() n'est pas encore résolu. |
ChangeConflictException | Il existe un conflit d'accès concurrentiel. |
Remarques
La version des éléments de la liste modifiée sera incrémentée. Pour rendre persistantes les modifications sans incrémentation des versions, utilisez SubmitChanges(ConflictMode, Boolean).
Exemples
L'exemple suivant illustre cette surcharge de SubmitChanges() en cours d'utilisation :
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