(ConflictMode) del método DataContext.SubmitChanges
Continúa a los cambios de contenido de la base de datos realizados por el usuario actual a una o más listas utilizando el modo de error especificado; o bien, si se encuentra un conflicto de simultaneidad, rellena la propiedad ChangeConflicts .
Espacio de nombres: Microsoft.SharePoint.Linq
Ensamblado: Microsoft.SharePoint.Linq (en Microsoft.SharePoint.Linq.dll)
Sintaxis
'Declaración
Public Sub SubmitChanges ( _
failureMode As ConflictMode _
)
'Uso
Dim instance As DataContext
Dim failureMode As ConflictMode
instance.SubmitChanges(failureMode)
public void SubmitChanges(
ConflictMode failureMode
)
Parámetros
failureMode
Tipo: Microsoft.SharePoint.Linq.ConflictModeUn valor que especifica si un conflicto de concurrencia debe detener la escritura más cambios.
Excepciones
Excepción | Condición |
---|---|
InvalidOperationException | ObjectTrackingEnabled es false o bien Al menos un conflicto de ChangeConflicts desde la última vez que se llamó a SubmitChanges() aún no está resuelto. |
ChangeConflictException | Hay un conflicto de concurrencia. |
Comentarios
La versión de los elementos de la lista modificada se incrementará. Para conservar los cambios sin versiones posteriores, utilice SubmitChanges(ConflictMode, Boolean).
Ejemplos
En el ejemplo siguiente se muestra esta sobrecarga de SubmitChanges() que se utiliza:
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