static void DeleteValueRecursive(this SQLiteConnection conn, object value, bool recursive, ISet <object> objectCache)
        {
            if (value == null)
            {
                return;
            }

            var enumerable = value as IEnumerable ?? new [] { value };

            conn.DeleteAllRecursive(enumerable, recursive, objectCache);
        }
 /// <summary>
 /// Deletes all the objects passed as parameters from the database.
 /// If recursive flag is set to true, all relationships marked with 'CascadeDelete' will be
 /// deleted from the database recursively. Inverse relationships and closed entity loops are handled
 /// correctly to avoid endless loops
 /// </summary>
 /// <param name="conn">SQLite Net connection object</param>
 /// <param name="recursive">If set to <c>true</c> all relationships marked with 'CascadeDelete' will be
 /// deleted from the database recursively</param>
 /// <param name="objects">Objects to be deleted from the database</param>
 public static void DeleteAll(this SQLiteConnection conn, IEnumerable objects, bool recursive = false)
 {
     conn.DeleteAllRecursive(objects, recursive);
 }