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()
等),那么它将尝试进行数据库调用……我预计它会失败,因为您那时已经处理了上下文。
我用Entity Framework。假设我有一个方法:
public IEnumerable<User> GetUsers() // return IEnumerable<User>
{
using (var context = new AppDbContext())
{
return context.Users;
}
}
现在当我打电话时:
var users = GetUsers();
这个操作是否执行数据库查询?
如果你什么都不做,就不会。
但是,如果您尝试遍历结果(或调用 Count()
等),那么它将尝试进行数据库调用……我预计它会失败,因为您那时已经处理了上下文。