【发布时间】:2013-08-31 16:34:31
【问题描述】:
我正在使用实体框架来获取表的总行数。我只想要行数,没有 where 子句或类似的东西。以下查询有效,但速度很慢。返回 4475 的计数大约需要 7 秒。
我的猜测是它正在遍历整个表,就像IEnumerable.Count() 扩展方法的工作原理一样。
有没有办法“快速”获得总行数?有没有更好的办法?
public int GetLogCount()
{
using (var context = new my_db_entities(connection_string))
{
return context.Logs.Count();
}
}
【问题讨论】:
-
如何在不加载内容的情况下计算 EntityFramework 中的行? stackoverflow.com/questions/890381/…
-
确保 context.Logs 是 DbSet、IDbSet 或 IQueryable,而不是 IEnumerable。如果它是一个 IEnumerable,则将获取并计算整个表。如果是 IQueryable,将生成查询以计算数据库中的行数,例如“SELECT COUNT(*) FROM dbo.Logs”(如果是 IdbSet 或 DbSet,它将被视为 IQueryable )
标签: c# sql-server entity-framework