Exemple #1
0
        /// <summary>
        /// Deletes objects based on an expression
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="criteria"></param>
        public int DeleteObjects <T>(Expression <Func <T, bool> > criteria)
        {
            StringBuilder sb = new StringBuilder("DELETE FROM ");

            sb.Append(Connection.CommandGenerator.ResolveTableName(typeof(T)));
            sb.Append(" WHERE ");
            IDbCommand                  cmd         = Connection.GetCommand();
            IDeleteFormatter            formatter   = Connection.GetDeleteFormatter(this);
            Dictionary <string, object> whereParams = new Dictionary <string, object>();
            string whereString = formatter.FormatDelete(DataAccess.Core.Linq.Common.PartialEvaluator.Eval(criteria), out whereParams);

            foreach (KeyValuePair <string, object> par in whereParams)
            {
                cmd.Parameters.Add(Connection.GetParameter(par.Key, par.Value));
            }

            sb.Append(whereString);
            cmd.CommandText = sb.ToString();
            return(ExecuteCommands.ExecuteCommand(cmd, Connection));
        }
Exemple #2
0
        /// <summary>
        /// Generates a delete command from an expression
        /// </summary>
        /// <param name="criteria">The expression that points to the item to remove</param>
        /// <returns></returns>
        public virtual IDbCommand GetDeleteCommand <T>(Expression <Func <T, bool> > criteria)
        {
            DatabaseTypeInfo ti = DataStore.TypeInformationParser.GetTypeInfo(typeof(T));
            StringBuilder    sb = new StringBuilder("DELETE FROM ");

            sb.Append(ResolveTableName(ti));
            sb.Append(" WHERE ");
            IDbCommand cmd = DataStore.Connection.GetCommand();

            IDeleteFormatter            formatter   = DataStore.Connection.GetDeleteFormatter(DataStore);
            Dictionary <string, object> whereParams = new Dictionary <string, object>();
            string whereString = formatter.FormatDelete(DataAccess.Core.Linq.Common.PartialEvaluator.Eval(criteria), out whereParams);

            foreach (KeyValuePair <string, object> par in whereParams)
            {
                cmd.Parameters.Add(DataStore.Connection.GetParameter(par.Key, par.Value));
            }

            sb.Append(whereString);

            cmd.CommandText = sb.ToString();
            return(cmd);
        }