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?