/// <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)); }
/// <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); }