sql-server - servidor - no se puede conectar a local sql server 2017
¿Debo cerrar manualmente la conexión SQL si uso Linq? (3)
Tradicionalmente, cuando usamos SQL string para hacer algún trabajo, tenemos que cerrar la conexión sql antes de que la página se cierre, me preguntaba si uso Linq para hacer las operaciones de datos. ¿Aún necesito cerrar la conexión manualmente?
En el código, no necesita abrir y cerrar las conexiones. Sin embargo, IMO un LinqDataContext debe tratarse como un recurso como SqlConnection o SqlCommand y debe ser parte del bloque de uso para que lo elimine cuando no lo utilice. Aunque he leído en MSDN que esto no es necesario, es una buena práctica.
Esto es muy similar a (pero no exactamente un duplicado) de esta pregunta .
LINQ to SQL abrirá y cerrará las conexiones cuando sea necesario; no tiene que deshacerse del DataContext. Sin embargo, hay ocasiones en las que puede "engañar" el contexto para dejar abierta una conexión cuando no debería hacerlo. Personalmente, me gusta deshacerme de ella por rutina. Vea mi respuesta a la otra pregunta para más detalles de Matt Warren del equipo LINQ to SQL.
Sin embargo, no conozco el Entity Framework.
Respondí en detalle una pregunta sobre el cierre de conexiones que puede encontrar interesante aquí .
Microsoft ha respondido esta pregunta aquí :
P. ¿Cuánto tiempo permanece abierta la conexión de mi base de datos?
A. Una conexión generalmente permanece abierta hasta que consume los resultados de la consulta. Si espera tomarse el tiempo para procesar todos los resultados y no se opone al almacenamiento en caché de los resultados, aplique ToList <(Of <(TSource>)>) a la consulta. En escenarios comunes donde cada objeto se procesa solo una vez, el modelo de transmisión es superior tanto en DataReader como en LINQ to SQL.
Los detalles exactos del uso de la conexión dependen de lo siguiente:
Estado de la conexión si el DataContext está construido con un objeto de conexión.
Configuración de cadena de conexión (por ejemplo, habilitar Conjuntos de resultados activos múltiples (MARS). Para obtener más información, vea Conjuntos de resultados activos múltiples (MARS).
Más detalles se pueden encontrar aquí :
Puede suministrar una conexión ADO.NET existente cuando crea un LINQ to SQL DataContext. Todas las operaciones contra DataContext (incluidas las consultas) utilizan esta conexión proporcionada. Si la conexión ya está abierta, LINQ to SQL lo deja como está cuando haya terminado con él.