DataContext.SubmitChanges 方法 (ConflictMode)
保持到内容数据库更改当前用户向一个或多个列表使用指定的故障模式 ;或者,如果发现并发冲突,将填充的ChangeConflicts属性。
命名空间: Microsoft.SharePoint.Linq
程序集: Microsoft.SharePoint.Linq(位于 Microsoft.SharePoint.Linq.dll 中)
语法
声明
Public Sub SubmitChanges ( _
failureMode As ConflictMode _
)
用法
Dim instance As DataContext
Dim failureMode As ConflictMode
instance.SubmitChanges(failureMode)
public void SubmitChanges(
ConflictMode failureMode
)
参数
failureMode
类型:Microsoft.SharePoint.Linq.ConflictMode一个值,指定并发冲突时应停止写入任何更改。
异常
异常 | 条件 |
---|---|
InvalidOperationException | ObjectTrackingEnabled是false - 或者 - 至少一个在ChangeConflictsSubmitChanges()曾在上一次的冲突尚未解决。 |
ChangeConflictException | 没有并发冲突。 |
备注
更改的列表项的版本也将增加。若要保留更改,而递增的版本,请使用SubmitChanges(ConflictMode, Boolean)。
示例
下面的示例演示SubmitChanges()正在使用此的重载:
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