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