Return IQueryable<T> as IEnumerable<T> 会引起数据库调用吗?

Return IQueryable<T> as IEnumerable<T> will cause in database call?

我用Entity Framework。假设我有一个方法:

public IEnumerable<User> GetUsers() // return IEnumerable<User>
{
    using (var context = new AppDbContext())
    {
        return context.Users;
    }
}

现在当我打电话时:

var users = GetUsers();

这个操作是否执行数据库查询?

如果你什么都不做,就不会。

但是,如果您尝试遍历结果(或调用 Count() 等),那么它将尝试进行数据库调用……我预计它会失败,因为您那时已经处理了上下文。