实体框架SaveChanges在什么都不做的时候挂起 - SQL超时

时间:2013-12-11 19:30:35

标签: sql-server vb.net entity-framework

这是故事。我有一个通用的保存Web服务调用,它使用Entity Framework来保存任何实体对象。这样做的原因之一是,有一个非常紧凑的时间表,其中两个,我们正在谈论旧版本的Windows Mobile,因此几乎没有更好,更现代的方式来支持这一点。这是一个EntityObjects数组,它被传递到Web服务,然后:

       Using TESTEntity As New TESTEntities(EntityConnectionString)

            For Each change As Object In Changes
                Dim item As EntityObject = DirectCast(change, EntityObject)

                Dim NewState As EntityState
                If (item.EntityKey Is Nothing) Then
                    NewState = EntityState.Added
                Else
                    NewState = EntityState.Modified
                End If

                TESTEntity.AttachTo(change.GetType().Name, item)

                TESTEntity.ObjectStateManager.ChangeObjectState(item, NewState)

            Next

            TESTEntity.SaveChanges()



        End Using

此功能暂时运行良好。它在开发中对我们来说仍然可以正常工作,但它在客户端失败了。它到达SaveChanges然后挂起,直到抛出SQLTimeoutException

首先,我试过没有运气就调高CommandTimeout值。

其次,这个网络服务在整个地方被多次调用,但似乎只在一个特定的地方失败,而且只在客户端网站上失败但不在这里。我们没有轻松访问客户端站点或数据库,但我们已经确认数据库模式匹配,我们相当确定他们的移动软件是最新版本(我们今晚确认)。

第三,我们在客户端的SQL Server上运行SQL分析器,看到正在进行的唯一请求是Audit Login而没有运行任何其他查询。这个SaveChanges只进行了少量的插入和更新,所以它不应该在一开始就超时。

如果有一个坏的实体对象或者关于架构的东西不匹配,我会期望一个不同的异常,或者至少SQL Profiler显示除了审计登录之外的其他东西......我在失去了发生了什么,有什么想法吗?

0 个答案:

没有答案