SQL服务器不返回任何查询的记录

时间:2017-03-23 13:32:37

标签: c# sql-server entity-framework linq

  1. 一周前,我们记录了一个错误,即查询"选择列表从哪里列=值"没有记录,但数据确实存在。

  2. 今天同样的错误再发生3次。但显然数据始终存在,因为大多数时候查询成功,而且数据从未被触及过。

    1. 今天同样,我们还发现了另一个错误:我们使用EntityFramework(6.1.40302.0)对表进行计数,我们得到以下错误: " System.InvalidOperationException:Sequence不包含任何元素 在System.Linq.Enumerable.Single [TSource](IEnumerable`1 source)"
    2. 显然,在EntityFramework检索返回结果后,从" Select Count(1)From Table Where column = value"查询,它总是希望有一条记录,所以它在内部使用.Single()。但是当执行此查询时,Sql Server不返回任何记录 至于"从表中选择计数(1)其中x = y"服务器应该总是返回一个结果,即使没有匹配(返回0)

      追踪这个错误的难点是,我无法重现它。它只发生了几次,已被记录。

      我们也注意到,错误发生了,SQL服务器要么忙,要么长时间运行。

      我们正在使用SQL Server 2016。

      其他人经历过吗?

      感谢。

      -------更新

      我已经附加了设法从EF中挖掘的查询: 显然这个查询应该总是返回0或某个数字,但不是没有记录。即使有其他进程锁定资源/取消提交事务等。

      SELECT 
      [GroupBy1].[A1] AS [C1]
      FROM ( SELECT 
          COUNT(1) AS [A1]
          FROM [dbo].[FileRecords] AS [Extent1]
          WHERE ([Extent1].[FileStatusId] IN (1000, 2000, 5000)) AND ([Extent1].[UserId] = @p__linq__0)
      )  AS [GroupBy1]
      
      
      
      -- p__linq__0: '1' (Type = Int32, IsNullable = false)
      

      它由EF Linq查询生成:

      Context.FileRecords.Count(f => openStatus.Contains(f.FileStatusId) && f.UserId == userId)
      

0 个答案:

没有答案