1

根据MSDN,实体框架应该在特定操作(例如SaveChanges())后关闭其连接。EntityFramework创建130多个连接

亚马逊正在向我咆哮我的SQL Server实例中有太多的连接(140个连接)。 sp_who2中的100个连接显示ProgramName为“EntityFramework”。

EF可以创建所有这些连接吗?是否有应用程序级别清理丢失?将启动定期垃圾收集帮助清理这些?

+0

不,文章说的是:当一个查询方法被调用,打开了连接,并保持开放直到ObjectResult已被完全消耗或处置。如果看到的连接太多,那么在退出调用方法的范围时,可能没有使用using语句来处理连接。 – 2015-02-06 19:17:48

+0

不要忘记连接池。处理连接是可以的。它会在被扔掉之前“流连”一段时间。这应该允许自动连接重用(ADO.net为你做这件事)。 – saegeoff 2015-02-06 19:44:22

回答

1

一个起点是要确保你不要让上下文实例悬而未决。用块封装它们可能会诀窍。

4

使用'使用'块将有所帮助。请记住,ADO.net连接是'汇集'的。如果在一定的时间内使用相同的连接字符串,则会重用连接的连接。它应该防止像那样的所有连接堆积起来。