Come modellare una relazione m-to-n basata sul tempo in Entity Framework utilizzando prima il codice

1

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?

    
posta al-bex 16.07.2015 - 14:18
fonte

1 risposta

2

Se vuoi avere una proprietà valid_from in C #, dovresti modellarla in C #.

Suggerisci un'implementazione e concludi quali requisiti potrebbero (e non potrebbero) essere soddisfatti con questa implementazione. Questo mette il carro davanti al cavallo. Inizia con le tue esigenze, quindi crea un'implementazione.

How would a suitable model look like for the code-first approach?

Dipende da cosa vuoi fare con quel modello. Di quali informazioni hai bisogno in C #? Un modello adatto conterrà tutte quelle informazioni.

  1. Forse vuoi solo recuperare la mappatura dei colori dello schermo attuale. In questo caso, C # non ha bisogno di valid_from , perché questa informazione è implicitamente giunta quando viene effettuata la richiesta al DB.
  2. Forse vuoi aggiungere una nuova mappatura dello schermo a colori da C # al DB. In questo caso, devi specificare esplicitamente il valore di valid_from per ogni nuova voce e dovresti modellarlo in C #.
risposta data 16.07.2015 - 14:49
fonte

Leggi altre domande sui tag