Devo modellare e gestire una configurazione basata sul tempo. In genere, senza un mapper OR, inizierei con le tabelle del database.
Screen            Color        ColorScreenMapping
-------------     ----------   --------------------------------------------
id | name         id | name    valid_from | screen_id | color_id | disabled
1  | screen 1     1  | red     1.1.2015   | 1         | 1        | 0
2  | screen 2     2  | green   3.1.2015   | 1         | 2        | 0
3  | screen 3     3  | blue    7.1.2015   | 1         | 3        | 0
                               1.1.2015   | 2         | 1        | 0
                               5.1.2015   | 2         | 2        | 0
                               9.1.2015   | 2         | 2        | 1
Quindi modellerei due classi: Schermo e Colore. La query del database assicurerebbe che per una determinata data ogni schermata abbia esattamente un oggetto colore associato (relazione 1-N).
Lo svantaggio sarebbe che le modifiche alla configurazione sarebbero possibili solo a livello di database e non nel modello C #. (Non ci sarebbe la proprietà valid_from nel modello.)
Come apparirebbe un modello adatto per l'approccio code-first?
Sarebbe più saggio iniziare con il mio database e utilizzare l'approccio db-first?