在我的數據庫中存儲媒體,例如。電影,系列(季節,劇集),音樂(小組,專輯,曲目)。 所有這些數據存儲在單個表格(媒體)中。 問題:我應該如何在我的代碼中使用這張表?我有兩種選擇:單表和存儲庫模式中的許多實體
- 爲所有媒體類型創建單個存儲庫和一個大型模型。
- 爲每種媒體類型創建模型和存儲庫。
哪個更好?爲什麼?
在我的數據庫中存儲媒體,例如。電影,系列(季節,劇集),音樂(小組,專輯,曲目)。 所有這些數據存儲在單個表格(媒體)中。 問題:我應該如何在我的代碼中使用這張表?我有兩種選擇:單表和存儲庫模式中的許多實體
哪個更好?爲什麼?
我會爲每種媒體類型做一個模型和回購。我認爲這會比一個強大的更好,因爲在這一點上,你不能確定你會需要做任何類型的預先格式化或驗證或任何類型。現在可能會有一些小的開銷,但未來它會更容易維護,更不復雜。它的手離開了更好的解決方案。
Btw。我認爲這就是爲什麼類和繼承是發明的原因:)你使用面向對象的語言,所以你可以利用它...
你可以爲媒體定義一個抽象基類模型類,並派生所有從這個具體的媒體模型。
現在您可以擁有處理各種媒體的媒體存儲庫。您檢索的媒體可以通過您獲得的課程類型進行解析。
interface IMediaRepository
{
ICollection<Media> GetAll();
ICollection<T> GetAllByType<T>() where T : Media;
}
Repository自身包裝數據庫查詢,如果你有一個表的所有或單獨的表中的每個媒體類型不要緊存儲庫。
你是否能夠退後一步,思考爲什麼你把所有這些不同類型放在一張表中?這可能是一種更好的設計,爲每種媒體類型提供獨立的表格。 – Compufreak
第二個。爲什麼?那麼,沒有任何理由。所有OOP的原因。 –