In un'applicazione web che ho eseguito in tutto, ho trovato il seguente codice a che fare con il DataContext quando si tratta di LinqToSQLLinqToSql DataContext statici in un'applicazione web
public partial class DbDataContext
{
public static DbDataContext DB
{
get
{
if (HttpContext.Current.Items["DB"] == null)
HttpContext.Current.Items["DB"] = new DbDataContext();
return (DbDataContext)HttpContext.Current.Items["DB"];
}
}
}
Poi fa riferimento in un secondo momento facendo questo:
DbDataContext.DB.Accounts.Single(a => a.accountId == accountId).guid = newGuid;
DbDataContext.DB.SubmitChanges();
Sono stato a esaminare le migliori pratiche quando si tratta di LinqToSQL.
Non sono sicuro dell'approccio adottato da Microsoft quando si tratta di DataContext che non è ThreadSafe e ne conserva una copia statica.
Si tratta di un buon approccio per l'applicazione Web?
@ Longhorn213 - In base a ciò che hai detto e più ho letto in HttpContext a causa di ciò, penso che tu abbia ragione. Ma nell'applicazione che ho ereditato è confuso perché all'inizio di ogni metodo stanno requisendo il db per ottenere le informazioni, quindi modificare quell'istanza del datacontext e inviare le modifiche su di esso.
Da questo, penso che questo metodo dovrebbe essere scoraggiato perché dà la falsa impressione che il datacontext sia statico e persistente tra le richieste. Se un futuro sviluppatore pensa che la richiesta dei dati all'inizio di un metodo sia perché pensano che sia già presente, potrebbero incorrere in problemi e non capire perché.
Quindi credo che la mia domanda sia, dovrebbe essere scoraggiato questo metodo nello sviluppo futuro?
Ecco un ottimo post con ulteriori dettagli: http://blog.stevensanderson.com/2007/11/29/linq-to-sql-the-multi-tier-story/ –
Abbiamo appena lanciato una variante di questo concetto fuori stanotte. –