Sto utilizzando Entity Framework Code First
con ASP.NET MVC. Questo gestisce la progettazione del mio database in base ai modelli di dominio all'interno della mia applicazione.
Allo stato attuale, il motore che sto scrivendo avrà una classe website
e store
. store
è una proprietà di website
collegata da un ForeignKey nel database. Voglio implementare alcune opzioni come TaxDisplayType
su ciascuno dei modelli, ma sono incerto sull'approccio migliore.
Il problema che ho è che Store
potrebbe potenzialmente avere la stessa opzione di website
che, se è impostata contro lo store, dovrebbe essere usata, ma se non lo è, torna al livello del sito web.
Queste sono le opzioni a cui posso pensare di fare questo:
-
Aggiungi questa opzione per ogni classe i.e
Website.TaxDisplayType
eStore.TaxDisplayType
- Sono preoccupato per la quantità di opzioni duplicate tra 2 tabelle. -
Avere un oggetto tabella che memorizza le coppie chiave / valore con un riferimento allo "scope" (sito Web o negozio i.e) e scrivo un wrapper per trascinare le opzioni tramite il loro nome. Il problema che ho con questo approccio è l'uso di stringhe magiche. A differenza dell'opzione 1, se nel codice è errato un nome di opzione di configurazione, verrà comunque compilato il progetto.
Sono anche preoccupato che andando avanti, se avessi 500 opzioni, questo equivarrà a 500 colonne di database - Questa non sembra una buona idea.
Sto cercando alcuni consigli sul modo migliore per gestire questo tipo di dati dato che:
- Mi piacerebbe usare le proprietà delle classi piuttosto che le stringhe magiche.
- Evita la duplicazione, ove possibile.