public ListItem InsertOrUpdateItem(TEntity entity) { if (entity == null) { return(null); } List list = _manager.GetList(); ListItem listItem = entity.Id > 0 ? list.GetItemById(entity.Id) : list.AddItem(new ListItemCreationInformation()); var fieldMappings = SpQueryArgs.FieldMappings; bool fUpdate = false; foreach (var fieldMapping in fieldMappings) { if (fieldMapping.Value.IsReadOnly || typeof(DependentLookupFieldAttribute).IsAssignableFrom(fieldMapping.Value.GetType())) { continue; } var prop = entity.GetType().GetProperty(fieldMapping.Key); if (prop != null) { var value = prop.GetValue(entity); if (entity.Id > 0 || (entity.Id <= 0 && !Equals(value, prop.PropertyType.GetDefaultValue()))) { listItem[fieldMapping.Value.Name] = value; fUpdate = true; } } var field = entity.GetType().GetField(fieldMapping.Key); if (field != null) { var value = field.GetValue(entity); if (entity.Id > 0 || (entity.Id <= 0 && !Equals(value, prop.PropertyType.GetDefaultValue()))) { listItem[fieldMapping.Value.Name] = value; fUpdate = true; } } } if (fUpdate) { listItem.Update(); listItem.Context.Load(listItem); return(listItem); } return(null); }
public List GetList(bool withPermissions) { var list = _manager.GetList(); if (list != null) { list.Context.Load(list); if (withPermissions) { list.Context.Load(list, l => l.EffectiveBasePermissions); } list.Context.ExecuteQuery(); } return(list); }