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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Evitare la script injection nelle GitHub Actions
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Miglioramenti nell'accessibilità con Angular CDK
Generare file PDF da Blazor WebAssembly con iText
Gestire i null nelle reactive form tipizzate di Angular
Eseguire operazioni sui blob con Azure Storage Actions
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Cambiare la chiave di partizionamento di Azure Cosmos DB
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Come migrare da una form non tipizzata a una form tipizzata in Angular