实体框架只是在INSERT期间超时停止

问题描述:

我有一个小型的c#应用程序,它使用Entitiy Framework 6将文本文件解析为某些数据库结构。实体框架只是在INSERT期间超时停止

在一般的文件内容被解析成3个表:

Table1 --(1-n)-- Table2 --(1-n)-- Table3 

应用工作了几个月没有在开发,阶段和生产环境的任何问题。

上周它停止在舞台上,现在我试图找出原因。

一个文件包含〜100个条目表1,〜2000个条目表2,〜2000米的条目表3

.SaveChanges()每个文件之后被调用。

我得到以下超时异常:

超时过期。操作完成之前超时的时间或服务器没有响应。该语句已终止。

AutoDetectChangesEnabled设置为false。

因为有4台是我执行一个更新语句中的每个文件后,出现了约于整个事情交易,所以我删除了第4台和交易的东西,但问题仍然存在。

为了测试它只是一个性能问题,我设置Database.CommandTimeout = 120无任何影响,它仍然运行到超时2分钟后。

(问题一个文件被存储在约5秒,这是绝对OK之前)

如果我看使用SQL Server Profiler的SQL服务器,我可以看到被称为.SaveChanges()后如下:

SQL Server Profiler 只有前几个INSERT报表Table3显示(总第4-15报表和.SaveChanges()后不久,所有的)

之后:没有新的条目,直到超时OC小人。

我完全不知道检查什么,因为没有错误或类似的代码的东西。

如果我看的SQL Server,也绝对没有理由要推迟查询或类似的东西(CPU,内存和磁盘空间都OK)。

会很高兴为这个每个评论,如果您想了解更多的相关信息,请让我知道。

最好的问候

+0

有一天,我发布这个问题已经过去了一个星期。几天后它又回来了。 有点令人沮丧,因为它来来去去,仍然不知道可能会导致这种行为。 –

通过重建Table1中的碎片索引来修复它。

下面的文章是有助于了解如何利用碎片索引的护理:

https://solutioncenter.apexsql.com/why-when-and-how-to-rebuild-and-reorganize-sql-server-indexes/

(如果有的国防部仍然认为这是没有有效的答案,任何的解释将是巨大的)