LINQ TO ENTITY 实例化需要加上数据库连接的Open操作吗。
SchoolEntities entities = new SchoolEntities();
如果这个直接初始化,下面直接LINQ语句也不会有问题。
我一般习惯这样写。
using (dbEntities db = new dbEntities()) { try { db.Connection.Open();//后面略 } catch (Exception ex) { } finally { db.Connection.Close(); } }
就是想问下,难道LINT TO ENTITY 的数据库管理是Framework自动管理的,不用自己连接释放连接的吗?
不用。
那Linq To Entity的连接是什么时候打开的,也没有关闭的操作,那么不是连接一堆了?
@Dhoopu: 第一次请求的时候打开连接,dbEntities 实例 Dispose 的时候关闭连接。
@Launcher: 确认是在Dispose的时候才关闭连接吗?
@dudu: 老大,求科普。这点比较迷糊。刚才同事没有操作连接串操作,所以来请教高人指教。这个到底有没有需要来手工处理链接的打开和关闭。谢谢。
@dudu: 每次执行请求的时候也会检测一次是否需要关闭连接。Dispose 保证无论是否有未完成请求都关闭连接。当然,这里的关闭连接只是将连接放回到连接池。
@Dhoopu: 可以肯定的是不需要手动打开与关闭连接
@Dhoopu: 没必要手工控制 DbConnection 的 Open 和 Close。
好的,多谢两位。那么是有个连接池,然后netframework自己控制Open Close吗?相比手工和自动的链接控制,两种有什么不同吗
@Launcher: 嗯,应该是这样的
@Dhoopu: DbConnection 的 Open 和 Close 只是将连接从池中取出或放回的操作,与数据库服务器的物理连接由连接池来控制它的生命周期。连接池每隔 2- 4 分钟清理一次连接池,对那些没有被引用且超过连接池最小大小的连接,连接池将会实际的断开这些连接。
PS:你的问题我无法回答,因为你问错了。
@Launcher: 多谢多谢。搞清楚了,醍醐灌顶。之前迷糊着,见谅见谅,哈哈.