If you are using event handlers to update value of a field for the same SPListItem which triggered event, it may throw "Save Conflict" error.
public override void ItemUpdated(SPItemEventProperties properties)
{
SPWeb contextWeb = properties.OpenWeb();
SPList spList = contextWeb.Lists[properties.ListId];
SPListItem contextItem = spList.GetItemById(properties.ListItemId);
contextItem["ColumnName"] = Value;
contextItem.update()
}
The RED line above cause update event and again invokes ItemUpdated Event Handler, which in turn goes in infinite loop and thorws Save Conflict error.
Solution:
Before updating item, we need to disable Event Firing..as below
public override void ItemUpdated(SPItemEventProperties properties)
{
this.DisableEventFiring();
SPWeb contextWeb = properties.OpenWeb();
SPList spList = contextWeb.Lists[properties.ListId];
SPListItem contextItem = spList.GetItemById(properties.ListItemId);
contextItem["ColumnName"] = Value;
contextItem.update()
this.EnableEventFiring();
}