实体框架,为所有应用程序线程使用一个连接

时间:2012-12-05 00:49:44

标签: multithreading c#-4.0 entity-framework-4

我是Entity FrameWork的新手,我有保存/更新到不同的程序 几个主题的表格。

首先,我为每个操作打开了与数据库的新连接

var db = new AppDBEntities()

AppDBEntities继承自ObjectContext

直到我得到“太多连接”例外,我意识到我达到了151 连接。

我可以在MySql DB中增加max_connection属性,但当然这样 不是正确的解决方案......

所以我尝试让应用程序对所有线程使用一个连接 我在管理这个方面很少迷失..

任何想法如何在使用或不使用同步对象的情况下跨所有线程使用一个数据库连接(Maby Entity Framework已经为此问题提供了自己的解决方案..)

感谢名单。

2 个答案:

答案 0 :(得分:0)

为什么不把你的AppDBEntities调用到使用语句中,这将关闭你的连接。

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

答案 1 :(得分:0)

在启动线程的类中将其定义为static。 但你必须考虑线程安全。只有一个线程可以同时访问一个对象,因此通常意味着在读/写之前将其锁定。我不知道DbContext的情况。