检查实体框架中表中没有行的最佳方法是什么?
我有这段代码
context.users.Count() ==0
但我认为计算表中的行以检查表中是否有行可能会很昂贵,所以还有其他方法可以做到这一点。
答案 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]