1

所以我们有这个使用自制数据访问框架的 Web 服务,我发现在当前状态下,该 Web 服务一次不能运行多个实例,因为这个框架会开始自己站起来,抱怨连接是已关闭/已打开并出现类似错误。

所以我实现了一个 SQL 锁/互斥锁,它对所有请求进行排队,从那时起,它一直非常顺利。

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

我的问题是,ADO 实体框架本身是否足够强大,所以我不再需要这个 SQL 互斥体实现了?

谢谢。

4

2 回答 2

2

如果您遵循“不要在线程之间共享 ObjectContext(代码中的 DbContext)实例”的规则,一切都会好起来的。

实体框架使用一些静态数据来提高性能(实体模型缓存),但大多数对象(实体连接、上下文、更改跟踪器等)不是线程安全的,不应在线程之间共享。

于 2012-06-05T11:44:43.103 回答
1

是的,它足够健壮,因为您不在线程之间共享 dbcontexts,而您的自制层必须这样做。不是我会走的路。

于 2012-06-05T11:49:04.790 回答