Esempio n. 1
0
        public ActionParams AtomicIncrement(IClassMapper classMap, IPredicate predicate, IProjection projection, int amount)
        {
            var target = classMap.GetPropertyMapByName(projection.PropertyName);

            if (target.Ignored || target.IsReadOnly)
            {
                throw new InvalidOperationException(
                          $"Atomic increment is not allowed on {projection.PropertyName} for type {classMap.EntityType}. It's either ignored or read only");
            }

            var wherePredicate = classMap.GetPredicate(predicate);
            var parameters     = new Dictionary <string, object>();

            var sql = SqlGenerator.AtomicIncrement(classMap, wherePredicate, parameters, projection, amount);

            var dynamicParameters = new DynamicParameters();

            foreach (var parameter in parameters)
            {
                dynamicParameters.Add(parameter.Key, parameter.Value);
            }

            return(ActionParams.New(sql, dynamicParameters));
        }