我有一個要求,將與各種實體相關的圖像存儲在數據庫中(按特定順序排序),其中圖像是從中央'媒體庫'中選擇的。我正在使用實體框架6訪問數據。實體框架許多多態關係
一般情況是有一個圖像的中央表,用戶可以涉及系統內的各種實體(例如位置可以有圖像,用戶可以有圖像 - 位置可以重新使用用戶使用的相同圖像)。
在我的腦海裏,結構如下。我無法弄清楚實現將看起來像一個實體框架實體佈局。
我已經看過答案如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特性做什麼)?