Кажется, я не могу найти никаких ответов на вопрос «как использовать подход EAV с инструментами ORM» вопрос, так что я попробую здесь удачи.
Предположим, у меня есть Entities
Table:
ID -> int
Name -> nvarchar(50)
An Images
Table:
EntityID -> int
Width -> int
Height -> int
И Songs
Table:
EntityID -> int
Duration -> decimal(12,3)
Мне нужно добавить расширяемые метаданные для объектов (неизвестные пары ключ-значение с информацией о типе), чтобы я мог выполнять такие запросы, как:
Найдите мне все песни с Продолжительностью
более 3 минут, с именем
, начинающимся с «The», с метаданными, удовлетворяющими этим критериям:
HasGuitarSolo
имеет значение true GuitarSoloDuration
больше 30 секунд И отсортируйте результаты на GuitarSoloDuration
в порядке убывания.
Я не хочу создавать столбцы HasGuitarSolo
, GuitarSoloDuration
и т. Д. В базе данных. В идеале я хотел бы сохранить их в схеме, подобной EAV, или альтернативной схема, которая не требует знания ключей заранее.