检查实体框架中表中是否没有行的最佳方法是什么?

时间:2015-08-13 10:04:48

标签: sql-server performance entity-framework

检查实体框架中表中没有行的最佳方法是什么?

我有这段代码

context.users.Count() ==0

但我认为计算表中的行以检查表中是否有行可能会很昂贵,所以还有其他方法可以做到这一点。

2 个答案:

答案 0 :(得分:3)

您可以使用Take(1).Count()

要检查是否存在行,请检查这样的计数。

if (context.users.Take(1).Count() == 0)
{
// do something 
}

答案 1 :(得分:2)

我认为,必须可读的方式是使用context.users.Any()。其中,EF将其翻译为:

SELECT 
  CASE WHEN ( EXISTS (SELECT 
    1 AS [C1]
    FROM [dbo].[users] AS [Extent1]
  )) THEN cast(1 as bit) ELSE cast(0 as bit) END AS [C1]
  FROM  ( SELECT 1 AS X ) AS [SingleRowTable1]