L'inizializzazione del database è una parte fondamentale quando iniziamo a lavorare con Entity Framework: la prima volta il database viene sempre creato da zero, ma per le volte successive il comportamento può variare in base alle nostre esigenze.
Ci sono tre strategie differenti di inizializzazione:
- CreateDatabaseIfNotExists: è la strategia di default applicata da EF e, come suggerisce il nome, il database viene creato solamente se non esiste;
- DropCreateDatabaseIfModelChanges: il database viene distrutto e creato di nuovo solo se il modello è cambiato;
- DropCreateDatabaseAlways: il database viene sempre distrutto e ricreato ogni volta che viene lanciata l'applicazione, indipendentemente dal fatto che il modello sia cambiato.
Si può impostare la strategia di inizializzazione scelta direttamente all'interno del costruttore della classe DbContext:
public class MyDBContext : DbContext { public MyDBContext(): base("MyConnString") { Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>()); } }
Nel caso in cui nessuna delle tre strategie standard di Entity Framework dovesse andare bene, possiamo sempre crearne una custom:
public class MyDBInitializer : CreateDatabaseIfNotExists<MyDBContext> { protected override void Seed(MyDBContext context) { base.Seed(context); } }
Eventualmente, si può anche impostare la strategia di inizializzazione all'interno del file app.config:
<configuration> <appSettings> <add key="DatabaseInitializerForType MyDataLayer.MyDBContext, MyDataLayer" value="MyDataLayer.MyDBInitializer, MyDataLayer" /> </appSettings> </configuration>
Qualora dovessimo andare in produzione, converrebbe invece disabilitare la strategia di inizializzazione per evitare la perdita di dati esistenti all'interno del database:
Database.SetInitializer<MyDBContext>(null);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare l nesting nativo dei CSS
Loggare le query più lente con Entity Framework
Combinare Container Queries e Media Queries
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Referenziare un @layer più alto in CSS
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare DeepSeek R1 con Azure AI
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Change tracking e composition in Entity Framework
Creare una libreria CSS universale: Clip-path
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!