コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }