Как хранить расширяемые метаданные удобным для ORM способом в .NET?

Кажется, я не могу найти никаких ответов на вопрос «как использовать подход 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, или альтернативной схема, которая не требует знания ключей заранее.

12
задан Marcin Seredynski 13 December 2010 в 12:32
поделиться