Ambito DataContext a intermittenza solleva ExecuteReader errore
-
16-09-2019 - |
Domanda
La nostra applicazione segue l'approccio di mantenere un DataContext al Thread/HttpContext, utilizzando il DataContextFactory classe delineato da Rick Strahl sul suo blog, tra cui la modifica alla Chiave menzionato da Richard (uso di questo tipo.AssemblyQualifiedName).
La soluzione è apparso il suono (anche se nella maggior parte dei casi un approccio diverso potrebbe essere meglio), tuttavia durante l'utilizzo di questo ho visto intermittente gli errori che compaiono nell'applicazione:
ExecuteReader richiede un dialogo aperto e Connessione disponibile.La connessione stato attuale è chiuso.
Ho accesso il datacontext tutto il codice utilizzando il seguente proprietà, che fa parte del mio DataContext di classe:
/// <summary>
/// Returns the current datacontext for the thread or HttpContext, creating one if it does not exist.
/// </summary>
public static SharedDataContext Current
{
get
{
return DataContextFactory.GetScopedDataContext<SharedDataContext>();
}
}
Essere intermittment sto avendo un momento difficile pinning questo in giù.Qualcuno sa cosa potrei fare di sbagliato, o avere una buona idea di come potrei essere in grado di eseguire il debug di questo problema?
Nota questo potrebbe essere un duplicato del senza risposta domanda qui
Soluzione
Ora usiamo un custom DataContextFactory che mantiene daticontesti per transazione.L'unico altro cambiamento principale è stato l'uso del [ThreadStatic] per la proprietà, piuttosto che manualmente accedendo tramite Thread.Get/SetData
Dal momento che questo cambiamento non è più il problema, pare, e come nessun altro le risposte sono state formulate sto suggerendo [ThreadStatic] come soluzione