Supporto a database multipli con Entity Framework Core

di Matteo Tumiati, in LINQ, Entity Framework,

Con l'arrivo di Entity Framework Core 1.0 è stata aggiunta la possibilità di salvare i dati su più database in modo molto semplice.

Supponiamo di avere una classe Context così composta:

public class Context : DbContext

{
    public Context()
    { 
    }
    
    public Context(DbContextOptions options) : base(options)
    { 
    }


    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
            optionsBuilder.UseSqlite("Filename=MyDB.db");
    }    
}

Siamo quindi andati a creare un override del costruttore che accetta una serie di parametri e va a richiamare il costruttore della classe base DbContext, che possiamo poi sfruttare a runtime.
All'interno del metodo OnConfiguring invece, siamo andati ad impostare il database come SQLite, solo se non è già stato configurato alternativamente, attraverso le opzioni che ci arrivano come parametro.

var connectionString = ConfigurationManager.ConnectionStrings["AltroDatabase"].ConnectionString;

var builder = new DbContextOptionsBuilder();

builder.UseSqlServer(connectionString);

var options = builder.Options;

using (var db = new Context(options))
{
    // ...
}

In questo modo abbiamo recuperato la stringa di connessione del database secondario, stiamo sfruttando la stessa classe Context (che quindi sfrutta lo stesso identico modello), per salvare i dati sia su un database di tipo SQLite, che su un database remoto di un altro tipo (in questo caso SQL Server).

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi