Sto lavorando ad un'applicazione asp.net-mvc. Il contesto dati linq viene passato ai miei oggetti di servizio dalla mappa della struttura. Ho un set di ibridi. Tutto funziona perfettamente.StructureMap InstanceScope.Hybrid e IDisposable
protected override void configure()
{
ForRequestedType<AetherDataContext>()
.TheDefaultIs(() => new AetherDataContext())
.CacheBy(InstanceScope.Hybrid);
}
Il problema è che io continuo a correre la nostra memoria, mi chiedo se l'interfaccia IDisposable è mai effettivamente chiamato.
Qualcuno ha qualche idea?
In caso contrario, qualcuno ha avuto qualche altra idea per cose che potrebbero causare le mie eccezioni di memoria?
Aggiornamento:
Quindi alcune informazioni aggiuntive, ho appena infilato un paio di metodi nel mio contesto dati un punti put freni in là.
protected override void Dispose(bool disposing)
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose(disposing);
}
public new void Dispose()
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose();
}
Io non sono abbastanza sicuro che sto facendo questo il modo corretto, sto cercando di indovinare che il nuovo metodo sarà chiamato?
In ogni caso, nessuno dei punti di frenata è stato colpito. Tuttavia, il costruttore della stessa classe è stato chiamato su ogni richiesta. Non l'ideale, sto pensando.
Mi sono sempre chiesto cosa succede agli IDisposables e alle varie politiche di caching. Non riuscendo a trovare nulla nei documenti, configura i punti di interruzione nel tuo Dispose() e vedi quando succede (se non del tutto). Sarei interessato alle risposte a questo –
con quale soluzione hai finito? Ho una preoccupazione simile attuale: http: // StackOverflow.it/questions/3665336/iqueryable-repository-with-structuremap-ioc-how-do-i-implement-idisposable – RPM1984