2012-12-05 56 views
0

我是實體框架的新手,我有程序通過多個線程保存/更新到不同的 表。實體框架,爲所有應用程序線程使用一個連接

起初,我打開每一個動作

var db = new AppDBEntities() 

AppDBEntities從ObjectContext的

繼承,直到我得到了「太多的連接」例外,我意識到,我達到了151 的分貝新的連接連接。

我可以提高max_connection財產的MySQL數據庫,但當然這 是不是正確的解決方案......

所以我試圖使應用程序使用的所有線程 和我一個連接小敗在管理這個..

不知道如何使用一個跨使用或不使用同步對象的所有線程數據庫連接(莫比實體框架媒體鏈接有其自己的解決方案針對此問題。)

Thanx。

+0

你在每一個線程中打開和關閉,但你真正想要的是在運行線程之前打開一個連接,並在完成之後提交/關閉。全部使用該單一連接。對? – Jeroen

+0

準確地說,所有線程都有一個連接,但我在更新/添加操作後立即執行每個動作 ,而不是在程序結束時執行。 – daniel

回答

0

爲什麼不把你的AppDBEntities調用到使用語句中,這會爲你關閉連接。

using(var db = new AppDBEntities()){ 
// your code goes here. 
} 
+0

因爲它偷走了更多的連接...... – daniel

0

在啓動線程的類中定義它是靜態的。 但是你必須考慮線程的安全性。只有一個線程可以同時訪問一個對象,所以通常意味着在讀/寫之前鎖定它。我不知道DbContext的情況。

相關問題