2012-06-05 30 views
1

因此,我们有这个使用自制数据访问框架的Web服务,并且我发现在当前状态下,Web服务一次不能运行多个实例,因为这个框架将开始踩在自己的脚上,并抱怨连接被关闭/已经打开,并出现类似错误。ADO实体框架能够运行多个实例

因此,我实现了一个SQL锁/互斥锁,它将所有请求排队,并且从那以后,它非常流畅。

我最近为另一个使用ADO实体框架的项目工作(我以前从未玩过),并发现它几乎完成了这个自制框架的工作。

我的问题是,ADO实体框架是否足够健壮,因此我不再需要此SQL互斥体实现?

谢谢。

回答

2

如果您将遵循规则“不要在线程之间共享ObjectContext(代码优先的DbContext)实例”,则一切都会好的。实体框架使用一些静态数据来提高性能(实体模型缓存),但大多数对象(实体连接,上下文,变更跟踪器等)不是线程安全的,不应该在线程之间共享。

+0

感谢您的信息。 –

1

是的,它足够健壮,可以做到这一点,因为你不需要在线程之间共享dbcontexts,你的自制程序层必须这样做。不是我已经走了的路。