23 messaggi dal 18 febbraio 2011
Salve,
mi sto approcciando adesso al mondo di asp.net MVC ed avrei questo quesito: fino ad ora avevo impostato una singola connessione tramite entity framework e la utilizzavo in questo modo:
            DB2014Context db = new DB2014Context();
            using (db)
            {
                var query = (from a in db.AZIENDA
                              orderby a.NOMEAZIENDA
                             select a).ToList();


Adesso però sorge una nuova esigenza: selezionare un db a seconda del parametro "Anno" passato.
Sono 4 db, tutti con uguale struttura, ma che si riferiscono ad anni differenti, ed io vorrei qualcosa tipo: seleziona l'anno da una select ed utilizza il relativo db.
Qual è il giusto approccio? Avete degli esempi da propormi?
Grazie.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la tua classe DB2014Context potrebbe essere usata per tutti i database, dato che la loro struttura è identica. Potresti fargli accettare un parametro nel costruttore che indica l'anno, e poi si costruisce la connection string in base a quello.

Inoltre, rinominalo. DB2014Context è legato ad un anno specifico (il 2014), trova un nome che sia più generico.

Ad esempio:
public class MioDbContext : DbContext {
  public MioDbContext(int anno) : base ($"Data Source=nome\\istanza; Initial Catalog=DbAnno{anno}; ...") {
  }
}


Il DbContext ha appunto un costruttore che accetta una connection string (o il nome di una connection string che deve trovarsi nel web.config). Nell'uno o nell'altro modo la puoi parametrizzare in base all'anno.

ciao,
Moreno

Enjoy learning and just keep making
23 messaggi dal 18 febbraio 2011
Buongiorno,
mi sono accorto solo ora della tua risposta, in quanto non mi era arrivata nessuna notifica.
In attesa che qualcuno mi rispondesse ho risolto così:

       
public DbContext(int anno)
            : base("name=DB" + anno + "Context") 
        { }


Mi sembra che sia la stessa soluzione che mi hai proposto tu, quindi penso di aver scelto la via giusta :)

Mi sembrava comunque doveroso risponderti per ringraziarti per il tempo perso per fornire una soluzione al mio problema.

Alla prossima, saluti.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.