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連接是'彙集'的。如果在一定的時間內使用相同的連接字符串,則會重用連接的連接。它應該防止像那樣的所有連接堆積起來。