У меня есть требование хранить изображения, связанные с различными объектами в базе данных (отсортированные в определенном порядке), где изображения выбраны из центральной медиа-библиотеки. Я получаю доступ к данным с Entity Framework 6.Entity Framework Много-много полиморфных отношений
Общий сценарий - есть центральная таблица изображений, которую пользователи могут относить к различным объектам внутри системы (например, в местах могут быть изображения, пользователи могут иметь изображения - местоположение может повторно использовать одно и то же изображение, используемое пользователем).
В моей голове структура, как показано ниже. Мне трудно понять, что реализация будет выглядеть как макет объекта Entity Framework.
Я рассмотрел такие ответы, как Entity Framework Polymorphic associations (Table-Per-Type?), Но они, похоже, используют подход EntityWithMedia1 и EntityWithMedia2, поэтому они связаны с родительской таблицей, но эта ситуация на самом деле не дает на мой взгляд (например, два объекта, как правило, включают медиа, но должны оставаться полностью разделенными по структуре БД).
Media {
ImageId (int)
ImageName (string)
ImageFileName (string)
RelatedEntities (list) // Queries RelatedMedia table
}
RelatedMedia {
ImageId (int)
EntityWithMediaId (int) // Actual Id of the Entity to be used with Type below
EntityWithMediaType (string) // In my head this says 'SomeEntity1' or some other ID such as a guid defined on the entity in c# (the 'Laravel approach')
SortOrder (int)
}
SomeEntity1 {
SomeEntity1Id (int)
EntityName (string)
SomeProperty (int)
RelatedMedia (list) // Queries RelatedMedia table
}
SomeEntity2 {
SomeEntity2Id (int)
EntityName (string)
AnotherProperty (string)
RelatedMedia (list) // Queries RelatedMedia table
}
Если это не поддерживается из коробки, есть много возможностей для реализации этого пути расширения EF (например, написать свой собственный запрос, так EF знает, что делать, когда я пытаюсь использовать RelatedEntities/свойства RelatedMedia)?