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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top