Exemple #1
0
        public string GetSql(Action <IKeyValuePairBuilder <T> > action, Action <IRestrictable <T> > restriction, List <object> parameters)
        {
            var builder = new KeyValuePairBuilder <T>();

            action(builder);

            var properties = builder.GetEnumerable().ToArray();

            if (properties.Any(x => x.Item1.ReadOnly))
            {
                throw new UpdateByQueryException("Update by query columns contained at least one read only column");
            }

            var columns = properties
                          .Select(x => {
                var sql   = x.Item1.ColumnName + " = " + _map.CreateParameter("p" + parameters.Count);
                var value = x.Item1.ConvertValue(x.Item2);
                parameters.Add(value);
                return(sql);
            }).ToArray();

            var restrictable = new Restrictable <T>();

            restriction(restrictable);

            var where = restrictable.BuildRestrictionsIncludeWhere(parameters, _map.Dialect);

            return(string.Format("UPDATE {0} SET {1}{2};", _map.TableName, string.Join(", ", columns), where));
        }
Exemple #2
0
        public string GetSql(Action <IUpdateStatementBuilder <T> > action, Action <IRestrictable <T> > restriction, List <object> parameters)
        {
            var builder = new UpdateStatementBuilder <T>();

            action(builder);
            if (builder.HasNoStatements())
            {
                throw new UpdateByQueryException("Can not update without update statements. Please add SET statements");
            }

            var properties = builder.GetEnumerable().ToArray();

            if (properties.Any(x => x.Property.ReadOnly))
            {
                throw new UpdateByQueryException("Update by query columns contained at least one read only column");
            }

            var columns = properties
                          .Select(x => x.GetSql(_map, parameters)).ToArray();

            var restrictable = new Restrictable <T>();

            restriction(restrictable);

            var where = restrictable.BuildRestrictionsIncludeWhere(parameters, _map.Dialect);

            return(string.Format("UPDATE {0} SET {1}{2};", _map.TableName, string.Join(", ", columns), where));
        }
        public string GetSql(Action <IRestrictable <T> > restriction, List <object> parameters)
        {
            var map = MappingRepo <T> .GetMap();

            var restrictable = new Restrictable <T>();

            restriction(restrictable);

            var where = restrictable.BuildRestrictionsIncludeWhere(parameters, map.Dialect);
            return("DELETE FROM " + map.TableName + where + ";");
        }
Exemple #4
0
        public string Apply(List <object> parameters, IDialect dialect)
        {
            var disjunction = new List <string>();

            foreach (var restriction in _restrictions)
            {
                var restrictable = new Restrictable <T>();
                restriction(restrictable);
                disjunction.Add(restrictable.BuildRestrictions(parameters, dialect));
            }

            return("(" + string.Join(" OR ", disjunction) + ")");
        }
        public string GetSql(Action <IRestrictable <T> > restriction, Expression <Func <T, object> > accessor, int amount, List <object> parameters)
        {
            var restrictable = new Restrictable <T>();

            restriction(restrictable);
            var where = restrictable.BuildRestrictionsIncludeWhere(parameters, _map.Dialect);

            var property = ExpressionProcessor <T> .GetPropertyFromCache(accessor);

            if (property.Update)
            {
                throw new MoranbernateMappingException("Can't use property " + property.Name + " for atomic increment as it is not defined as Readonly");
            }

            return(string.Format("UPDATE {0} SET {1} = {1} + {2}{3};", _map.TableName, property.Name, amount, where));
        }
        public string GetSql(Action <IRestrictable <T> > restriction, List <object> parameters)
        {
            var map = MappingRepo <T> .GetMap();

            var baseSql = "SELECT COUNT(*) FROM " + map.TableName;

            if (restriction == null)
            {
                return(baseSql + ";");
            }

            var restrictable = new Restrictable <T>();

            restriction(restrictable);

            var where = restrictable.BuildRestrictionsIncludeWhere(parameters, map.Dialect);
            return(baseSql + where + ";");
        }
 public void Setup()
 {
     _target = new Restrictable <TestDto>();
 }