Exemple #1
0
        /// <summary>
        /// Write the necessary Sql statements into the specified SqlStringBuilder
        /// to delete all the records represented by the current collection.
        /// </summary>
        /// <param name="sql"></param>
        public virtual void WriteDelete(SqlStringBuilder sql)
        {
            if (this._values.Count > 0)
            {
                bool deleteIndividually = Parent == null;

                if (!deleteIndividually)
                {
                    if (string.IsNullOrEmpty(ReferencingColumn))
                    {
                        throw new ArgumentNullException("{0}.ReferencingColumn not set", this.GetType().Name);
                    }

                    sql.Delete(Dao.TableName(typeof(T)))
                    .Where(new AssignValue(ReferencingColumn, Parent.IdValue))
                    .Go();
                }

                foreach (Dao d in this)
                {
                    if (d.AutoDeleteChildren)
                    {
                        d.AutoHydrateChildrenOnDelete = AutoHydrateChildrenOnDelete;
                        d.WriteChildDeletes(sql);
                        sql.Go();
                    }

                    if (deleteIndividually)
                    {
                        d.WriteDelete(sql);
                        sql.Go();
                    }
                }
            }
        }
Exemple #2
0
        public virtual void WriteDelete(SqlStringBuilder sql)
        {
            Database db = Database;

            OnBeforeWriteDelete(db);
            sql.Delete(TableName()).Where(db.GetAssignment(KeyColumnName, IdValue, sql.ColumnNameFormatter));
            OnAfterWriteDelete(db);
        }
Exemple #3
0
        public static SqlStringBuilder From <T>(QueryFilter filter, Database db = null) where T : Dao, new()
        {
            SqlStringBuilder sql = GetSqlStringBuilder <T>(db);

            return(sql.Delete(Dao.TableName(typeof(T))).Where(filter));
        }
Exemple #4
0
 protected internal virtual void WriteDelete(SqlStringBuilder sqlStringBuilder, IQueryFilter filter)
 {
     sqlStringBuilder.Delete(TableName()).Where(filter).Go();
 }