Я создал многозонный музыкальный проигрыватель, который обрабатывает большие музыкальные коллекции. Подход, который я выбрал, заключался в создании таблицы тегов и ассоциации Song-Tag. У меня есть различные типы тегов, TagArtist, TagAlbum, TagGenre, TagWord, ... которые все происходят от Tag.
Использование Entity Framework 4 Я могу эффективно запросить любое слово, жанр, название, исполнителя и получить все песни, содержащие это слово. Я могу запросить либо «любое слово в любом месте в исполнителе, названии, жанре, ...», либо по определенному типу тега, например, Исполнитель начинается с 'X'.
Для обработки случайных списков воспроизведения я также храню случайное число с каждой песней в базе данных. Упорядоченный случайный результат может быть получен с помощью XOR сегодняшнего случайного числа с номером в базе данных (операция, которую вы можете выполнить в базе данных).
Используя LINQ to EF, вам никогда не нужно хранить весь плейлист в памяти, вы используете Skip () и Take () для перехода к нужной «странице» или отдельной песне.
Моя система также отвечает на запросы на естественном языке, такие как «Воспроизвести песни, добавленные на прошлой неделе» или «Воспроизвести исполнителя: Фил», или просто «Играть X». Смотрите демо в блоге.
Я считаю, что это также первый музыкальный проигрыватель, который не воспроизводит сезонную музыку в неподходящее время года!