2009-08-15 5 views
27

Quando istanza il mio oggetto "Entità" in Entity Framework e faccio un paio di query usando quell'oggetto Entità, cosa succede alle connessioni?Quando Entity Framework apre e chiude Connessioni database?

  • Apre una connessione quando eseguo l'istanza dell'oggetto e lo chiudo quando lo dispongo?
  • Oppure apre e chiude una connessione per ogni singola query che eseguo?

In entrambi i casi, è possibile cambiarlo in modo che faccia l'altra cosa?

+2

Wow @ pb2q è stata una modifica molto importante per una domanda di 6 anni! Ben fatto! –

+0

dMagiola: nessun problema. Felice di aiutare con eventuali miglioramenti: importanti o meno, vecchi o nuovi. Continua a chiedere amico! – pb2q

risposta

3

Il comportamento è leggermente cambiato in EF6, che consente di passare in connessioni aperte o di aprire la connessione EF in un secondo momento. Dai un'occhiata a https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

Grazie mille per il collegamento - non c'è modo di dichiarare una connessione aperta tramite la clausola 'using' di C#? per esempio. 'usando (var conn = openAConnection())'. Il collegamento che condividi mostra un'apertura manuale della connessione che viene chiusa quando il contesto correlato è disposto, il che sembra così poco intuitivo e hacky. – aaaaaa

+0

@aaaaaa - forse stai guardando l'EF5 e l'esempio precedente? Nel secondo esempio di codice c'è la clausola 'using' come vuoi tu. Nota che devi solo preoccuparti di ciò se in effetti vuoi fare qualcosa manualmente con la connessione, ad es. eseguire dichiarazioni al di fuori di EF. Se non ne hai bisogno, non devi assolutamente pensare di aprire e chiudere la connessione. – Rory

+0

"Comportamento in ES6 e versioni future": 'conn.Open();'. Questa è la linea che mi infastidisce. E sì, mi serve apparentemente per ottenere più set di risultati da una stored procedure (cercando di mantenere le richieste db su una sola vista) – aaaaaa