调试EF App会锁定数据库表吗?

时间:2012-01-25 17:56:22

标签: sql-server wcf entity-framework entity-framework-4

我有一个WCF应用程序,里面有5-6个EF模型。在生产环境中,只运行此应用程序的一个实例。

但在开发过程中,有5位开发人员同时在开发它。 (针对同一个数据库。)

我们注意到有时我们的SQL Server 2008 R2数据库上的表被锁定。似乎是有人在调试时做了一步,并且必须让它保持几分钟的步骤。

我很好奇为什么EF会锁定桌面。怎么会有人使用EF锁定桌面?我该怎么做才能防止这种情况发生?

注意:此相同的应用程序访问WCF数据服务(OData)端点以获取其某些数据(来自同一数据库)。我没有看到OData如何锁定数据库,但我想如果重要的话我会提到它。

2 个答案:

答案 0 :(得分:1)

只有一种解决方案。每个开发人员都将在本地安装数据库,并在自己的环境中运行调试会话!其他任何错误的开发环境。使用SQL Server Express或SQL Server Developer版。

答案 1 :(得分:0)

我们所能做的就是冒险进行各种猜测。例如。如果您的数据模型缺少正确的索引,则记录查找将变为表扫描并扫描escalate locks到表级。

真正的解决方案是正确调查阻止。究竟是什么导致了块正在等待什么资源?什么会话/事务/语句保存其他会话/事务/语句所需的资源。

使用Activity Monitorwho_is_activesp_blitz。阅读Waits and Queues白皮书。