예제 #1
0
        /// <summary>
        /// Generates a "DELETE FROM tablename WHERE pkcolumns = ?" statement for a POCO of Type T.
        /// </summary>
        public string GenerateDelete <T>()
        {
            PocoData pocoData = _pocoDataFactory.GetPocoData <T>();

            if (pocoData.Columns.Count == 0)
            {
                throw new InvalidOperationException(string.Format(NoColumns, "DELETE", typeof(T).Name));
            }

            if (pocoData.MissingPrimaryKeyColumns.Length > 0)
            {
                throw new InvalidOperationException(string.Format(MissingPkColumns, "DELETE", typeof(T).Name,
                                                                  pocoData.MissingPrimaryKeyColumns.ToCommaDelimitedString()));
            }

            string pkColumns = string.Join(" AND ", pocoData.GetPrimaryKeyColumns().Select(c => string.Format("{0} = ?", c.ColumnName)));

            return(string.Format("DELETE FROM {0} WHERE {1}", pocoData.TableName, pkColumns));
        }