Nei miei test unitari utilizzo EF Core 2.2 con un InMemoryDatabase come:
var dbOptions = new DbContextOptionsBuilder<MyContext>().UseInMemoryDatabase("Foo").Options;
using (var context = new MyContext(dbOptions));
{
// Do stuff..
}
Quando si utilizza UseInMemoryDatabase
devo davvero disporre di DbContext
? Dopo aver letto il blog di Jon Gallants, mi rendo conto che Dispose()
non è sempre necessario anche quando si utilizza un vero provider di database SQL. Qual è lo scopo di smaltire DbContext
quando si utilizza InMemoryDatabase? Posso lasciarlo a GC?
Finché il contesto non ha dipendenze come una connessione db o risorse di file che dovrebbero essere liberate per lo smaltimento, è possibile tralasciare lo smaltimento.
Tutti i riferimenti che escono dall'ambito vengono contrassegnati automaticamente per la raccolta dei dati inutili.
Con l'aspetto del tuo codice hai un blocco using
che a mio parere è una buona cosa perché non appena il codice in esecuzione lascia il blocco using
, viene chiamato Dispose
.