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
)

参数

异常

异常 条件
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

另请参阅

引用

DataContext 类

DataContext 成员

SubmitChanges 重载

Microsoft.SharePoint.Linq 命名空间